iOS OC 成員變數是強引用還是弱引用

來源:互聯網
上載者:User

標籤:

成員變數,本例中的是執行個體成員變數,是作用於整個類對象內的。從生命週期來看,它比局部變數要長一些,但它預設是私人的,其他對象是無法訪問到的。

比如你一個變數放在@interface 中,你申請一個實體時,變數存活周期跟你實體一樣。

因為成員變數的範圍是整個類對象內,所以在ARC環境下OC裡面的成員變數應該是 strong屬性的。


連結:http://www.zhihu.com/question/23347971/answer/24332408
例子:
標頭檔:
@interface ViewController : UIViewController{    //成員變數    NSArray *array1;}//屬性變數@property (nonatomic,strong) NSArray *array2;@end


源檔案:
- (void)viewDidLoad{    [super viewDidLoad];    array1 = [[NSArray alloc] initWithObjects:@"abcde", nil];    array2 = [[NSArray alloc] initWithObjects:@"123abc", nil];    {//        局部變數        NSArray *array1 = [[NSArray alloc] initWithObjects:@"12345", nil];    }    NSLog(@"\narray1 : %@\n array2 : %@",array1,array2);}

我的理解是
局部變數是根據其生存周期定義的,在源檔案中的array1,其生命週期是在以“{ }”為界限的代碼塊中,雖然它的名稱與成員變數相同,但不是同一個變數。成員變數是用於一個地區內的臨時變數。
成員變數,本例中的是執行個體成員變數,是作用於整個類對象內的。從生命週期來看,它比局部變數要長一些,但它預設是私人的,其他對象是無法訪問到的。因此,一般自訂方法,作為一個介面讓其他對象訪問這個變數。因此,成員變數用於類內部,無需與外界接觸的變數。
根據成員變數的私人性,為了方便訪問,所以就有了屬性變數。屬性變數的好處就是允許讓其他對象訪問到該變數。當然,你可以設定唯讀或者可寫等,設定方法也可自訂。所以,屬性變數是用於與其他對象互動的變數。
目前我是這麼理解的,希望對你有協助。

成員變數和屬性變數是完全一樣的,別被obj-c 2.0的靈活寫法給誤導了。
但是屬性變數可以作為方法名字,也就是可以有其他名字。

http://www.cocoachina.com/bbs/read.php?tid-245245.html

看到一篇文章:

ios中的成員變數定義在@interface 和@implementation 中的區別是什嗎?   ios中的成員變數定義在@interface 和@implementation 中的區別是什嗎? 

@interface 中是成員變數


@implementation 是全域變數


範圍和存活區間的問題


比如你一個變數放在@interface 中,你申請一個實體時,變數存活周期跟你實體一樣


在@implementation 中,因為是全域,所以一直存在

非常感謝!
還想瞭解下,具體的範圍的區別是什嗎? 

範圍,就是這個變數在存活地區,


比如說成員變數,就是放在@interface,作用域是類裡面


全域變數,是整個程式


臨時變數一般是函數內


@implementation testClass{
UIView *_test;
}
這樣的變數應該不是全域的吧? 

@implementation testClass{ UIView *_test; } 


這個情況比較少個,不推薦,這個情況是成員變數


但是預設是@private

其實都是成員變數,放在@implemetation裡的是私人的而已。 

都是成員變數,只是放在@implemetation中的變數無法被子類繼承 

iOS OC 成員變數是強引用還是弱引用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.