IOS@property參數詳解

例子:NSString* house = [[NSString alloc] initWithString:"尼瑪的房子"];


以上代碼會產生:

1、在堆上分配一段內存來存儲@“尼瑪的房子”。內存地址爲:0X1111,內容爲:“尼瑪的房子”

2、在棧上分配一段內存來存儲house。地址爲:0XAAAA,內容爲0X1111


1、assign:NSString* myhouse = [house assign];

此時myhouse和house完全形同,地址都是0XAAAA,內容爲0X1111、指向堆上的值

myhouse就好比是house的別名,

2、retain:NSString* myhouse = [house assign];

此時的myhouse的地址不爲0XAAAA了   可能爲0XAABB 但是內容還是0X1111,所以兩個都可以管理“尼瑪的房子”

3、copy:copy 的情況就是在堆上又開闢了一段內存,內存什麼的都變化了。


簡單的說:

1、assign好比是引用,別名!

2、retain就好比是在棧中的地址不同,但是內容相同。

3、copy:深拷貝,堆的位置不同,棧的位置也不同。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章