iOS關鍵字含義(基礎)

2021-07-08 15:41:41 字數 2607 閱讀 4607

strong與weak是由arc新引入的物件變數屬性 

xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和assign,是不支援arc的。xcode 4.3(ios5和以上版本)之後就有了arc,並且開始使用 

strong與weak 

assign: 用於非指標變數。用於

基礎資料型別 (例如nsinteger)和c資料型別(int, float, double, char, 等),另外還有id 

如: @property (nonatomic, assign) int number; 

@property (nonatomic, assign) id classname;//id必須用assign 

反正記住:前面不需要加 「*」 的就用assign吧 

retain:用於指標變數。就是說你定義了乙個變數,然後這個變數在程式的執行過程中會被更改,並且影響到其他方法。一般是用於字串( nsstring,nsmutablestring),陣列(nsmutablearray,nsarray),字典物件,檢視物件(uiview ),控制器物件(uiviewcontroller)等 

比如: 

@property (nonatomic,retain) nsstring * mystring; 

@property (nonatomic, retain) uiview * myview; 

@property (nonatomic, retain) uiviewcontroller * myviewcontroller; 

xcode 4.2不支援arc,所以會頻繁使用retain來修飾,用完釋放掉,而xcode4.3支援arc,可以使用retian,不需要手動釋放記憶體,系統會自動為你完成,如果你在xcode4.3上面開發,retian和strong都是一樣的,沒區別 

strong和weak: 

事實上 

@property(nonatomic,strong) myclass *myobject;就是相當於@property(nonatomic,retain) myclass *myobject;@property(nonatomic, weak )iddelegate;就是相當於@property(nonatomic,assign )iddelegate; 

現在系統自動生成的屬性都是用weak來修飾的,我想應該是xcode 4.2不支援arc,所以大家都是用retain。現在xcode4.3支援arc了,於是蘋果建議程式設計師放棄retain,以後都用weak。 

weak 就是相當於assign,同樣可以在xcode4.3開發環境下放棄使用assign 使用weak 來代替 

unsafe_unretained 

unsafe_unretained 就是ios5版本以下的 assign ,也就是 unsafe_unretained , weak, assign 三個都是乙個樣的。 因為 ios5用的是 weak ,那在ios4.3就用不了,如果你將 weak 修改為 unsafe_unretained ,那就可以用了。說到底就是ios 5之前的系統用該屬性代替 weak 來使用。 

copy:這個東西估計是大部分人最不容易搞明白的東西,我也搞不明白。聽別人說這個東西基本不用了,效果其實和retain沒什麼兩樣,唯一的區別就是copy只用於nsstring而不能用於nsmutablestring。 

不過好像當乙個類繼承nsobject,那麼這個類裡面的屬性需要使用copy,比如: 

#import

#import

@inte***ce annotation : nsobject  

@property (nonatomic) cllocationcoordinate2d coordinate; 

@property (nonatomic, copy) nsstring *title; 

@property (nonatomic, copy) nsstring *subtitle; 

@end 

反正以後就這麼用就是了 

反正就記住一點:xcode4.2用retain和assign ;xcode4.3或以上版本用strong與weak 。以前用xcode4.2開發程式的程式設計師會習慣用retain ,所以**都是retian的,新手如果從xcode4.3學起的話就用strong與weak  吧,這裡面講的區別有些不對的地方。 

readonly 

此標記說明屬性是唯讀的,預設的標記是讀寫,如果你指定了唯讀,在@implementation中只需要乙個讀取器。或者如果你使用@synthesize關鍵字,也是有讀取器方法被解析。而且如果你試圖使用點操作符為屬性賦值,你將得到乙個編譯錯誤。 

readwrite 

此標記說明屬性會被當成讀寫的,這也是預設屬性。設定器和讀取器都需要在@implementation中實現。如果使用@synthesize關鍵字,讀取器和設定器都會被解析。 

nonatomic 

指出訪問器不是原子操作,而預設地,訪問器是原子操作。這也就是說,在多執行緒環境下,解析的訪問器提供乙個對屬性的安全訪問,從獲取器得到的返回值或者通過設定器設定的值可以一次完成,即便是別的執行緒也正在對其進行訪問。如果你不指定nonatomic,在自己管理記憶體的環境中,解析的訪問器保留並自動釋放返回的值,如果指定了nonatomic,那麼訪問器只是簡單地返回這個值。 

Python關鍵字含義

關鍵字 含義 false 布林型別的值,表示假,與 true 相反 none none 比較特殊,表示什麼也沒有,它有自己的資料型別 nonetype。true 布林型別的值,表示真,與 false 相反 and用於表示式運算,邏輯與操作 as用於型別轉換 assert 斷言,用於判斷變數或者條件表...

iOS中retain等關鍵字的含義

分類 ios開發 2012 03 02 15 05 950人閱讀收藏 舉報 assign 簡單賦值,不更改索引計數 copy 建立乙個索引計數為1的物件,然後釋放舊物件 retain 釋放舊的物件 將舊物件的值賦予輸入物件,再提高輸入物件的索引計數為1 那上面的是什麼意思呢?copy其實是建立了乙個...

iOS開發基礎 屬性關鍵字

目錄 一.weak 二.strong 三.copy 四.atomic 五.nonatomic 六.assign 七.retain 八.readwrite 九.readonly 在arc下,不顯示指定關鍵字時,預設為 普通資料 atomic readwrite assign 普通oc物件 atomic...