property屬性? property:提供成員變量的訪問方法的聲明、控制成員變量的訪問權限、控制多線程時成員變量的訪問環境 。property不但能夠在interface,在協議protocol.和類別category中也可使用。 synthesize 合成訪問器方法? 實現property所聲明的方法的定義。其實說直白就像是:property聲明瞭一些成員變量的訪問方法 ,synthesize則定義了由property聲明的方法。他們以前的對應關係是 property 聲明方法 ----------》 頭文件中申明的方法 synthesize定義方法---------》Cpp文件中定義的方法。 @property(attribute1 , attribute2, ...])是property的官方表達方式,因此看到attribute1, attribute2,你就應該懂的, 他的用法不是很簡單。下面就對他的屬性列表進行分類介紹: 下面對屬性列表進行一下簡單的介紹,後續會用代碼來解釋。 1.可讀性:readonly 、readwrite @property(readwrite,....) valueType value;這個屬性是變量的默認屬性,就是若是你(readwrite and readonly都沒有使用,那麼你的變量就是readwrite屬性),經過加入readwrite屬性你的變量就會有get方法,和set方法。 @property(readonly,...) valueType value;這個屬性變量就是代表變量只有可讀方法,也就是說,你只能使用它的get方法。 2,assign,setter方法直接賦值,不進行任何retain操做,爲了解決原類型與環循引用問題 3,retain,setter方法對參數進行release舊值再retain新值,全部實現都是這個順序 4,copy,setter方法進行Copy操做,與retain處理流程同樣,先舊值release,再Copy出新的對象,retainCount爲1。這是爲了減小對上下文的依賴而引入的機制。 5,nonatomic,非原子性訪問,不加同步,多線程併發訪問會提升性能。 注意,若是不加此屬性,則默認是兩個訪問方法都爲原子型事務訪問。鎖被加到所屬對象實例級.因此不加nonatomic對與多線程是安全的 。 六、strong weak strong與weak是由ARC新引入的對象變量屬性 ARC引入了新的對象的新生命週期限定,即零弱引用。若是零弱引用指向的對象被deallocated的話,零弱引用的對象會被自動設置爲nil。 @property(strong) MyClass *myObject; 至關於@property(retain) MyClass *myObject; @property(weak) MyOtherClass *delegate; 至關於@property(assign) MyOtherClass *delegate; 強引用與弱引用的廣義區別: 強引用也就是咱們一般所講的引用,其存亡直接決定了所指對象的存亡。若是不存在指向一個對象的引用,而且此對象再也不顯示列表中,則此對象會被從內存中釋放。 弱引用除了不決定對象的存亡外,其餘與強引用相同。即便一個對象被持有無數個若引用,只要沒有強引用指向他,那麼其仍是會被清除。沒辦法,仍是 「強哥」 有面子。 簡單講strong等同retain weak比assign多了一個功能,當對象消失後自動把指針變成nil,好處不言而喻。