iOS 物件導向

2021-07-10 21:48:45 字數 1786 閱讀 8762

主要內容:

nonatomic、strong 等 property 的修飾符

public、private 等訪問控制符

assign

簡單賦值,不更改對所賦的值的引用計數。主要適用於nsinteger等基礎型別,以及short、float、double、結構體等c資料型別。

retain

使用retain指示符定義屬性時,該屬性啟用引用計數。當把某個物件賦值給該屬性時,該屬性原來所引用的物件的引用計數減一,被賦值物件的引用計數加一。

(即自動生成的**內會自動release舊值,retain新值)

copy

如果使用copy指示符,當呼叫setter方法對成員變數賦值時,會將被賦值的物件複製乙個副本,再將該副本賦值給成員變數。copy指示符會將原成員變數所引用物件的引用計數減一。

getter、setter

用於為合成的getter、setter方法自定義方法名,例如:

@property (getter = getn, setter = setn:) nsstring* name; 

//getter方法名為getn,setter方法名為setn:

//注意!setter方法名後需要冒號:

readonly、readwrite

atomic、nonatomic

指定合成的訪問方法是否為原子操作。原子操作指是否執行緒安全。

如果使用atomic,那麼合成的訪問方法都是執行緒安全的,這意味著當乙個執行緒進入訪問方法的方法體之後,其他執行緒無法進入該訪問方法,這樣就可以避免多執行緒併發破壞物件的資料完整性。

雖然atomic可以保證物件資料的完整性,但是會造成效能下降。因此在大多數單執行緒環境下,應該考慮使用nonatomic來提高訪問方法的訪問效能。

strong、weak

strong指示符指定該屬性對被賦值物件持有強引用,而weak指示符指定該屬性對被賦值物件持有弱引用。

在arc模式中十分有用。如果程式不希望被該屬性引用的物件被**,那就應該使用strong指示符;如果程式需要保證效能,避免記憶體溢位,則可以使用weak指示符。

對於宣告為weak的指標,指標指向的位址一旦被釋放,這些指標都將被賦值為nil,這樣能夠有效地防止懸空指標。

private:當前類訪問許可權

該許可權的成員只能在當前類的內部被訪問;

在類的實現部分定義的成員變數預設使用該訪問許可權

package:與映像訪問許可權相同

該許可權的成員可以在當前類以及當前類實現的同乙個映像的任意地方訪問;

所謂同一映像,即編譯後生成的同乙個框架或同乙個執行檔案;

protected:子類訪問許可權

該許可權的成員可以在當前類、當前類的子類的任意地方訪問;

在類的介面部分定義的成員變數預設使用該訪問許可權;

public:公共訪問許可權

該許可權的成員可以在任意地方訪問

訪問控制級別表:

訪問控制符

同乙個類中

同乙個映像中

子類內全域性範圍內

@private

√@package√√

@protected√√

@public√√

√√

iOS 物件導向

不恰當的使用繼承導致的最大的乙個特徵就是高耦合。是否使用繼承需要考慮三個點 父類只是給子類提供服務,並不涉及子類的業務邏輯 層級關係明顯,功能劃分清晰,父類和子類各做各的。父類的所有變化,都需要在子類中體現,也就是說此時耦合已經成為需求 萬不得已不要用繼承,優先考慮組合等方式。如果只是出於 復用的目...

ios之Objective c物件導向程式設計測試

import inte ce person nsobject void create nsstring name float weight void eat int cnt void walk int num end implementation person void create nsstrin...

IOS學習之OC物件導向 封裝

一 物件導向和封裝 物件導向的三大特性 封裝 成員變數 繼承和多型 在oc語言中,使用 inte ce 和 implementation 來處理類。inte ce就好像暴露在外面的時鐘表面,像外界提供展示以及介面。implementation就好像隱藏在時鐘內部的構造實現,把具體的實現封裝了起來。二...