OC 屬性總結

2021-06-23 04:27:42 字數 3169 閱讀 6719

setter getter

setter 方法的作用:為單一的變數賦值.

setter 方法規範寫法:1.- 號方法,無返回值.

名字以set開頭 + 要設定的變數的例項變數名(首字母要大寫):(setter方法有且只有乙個引數) + 引數的型別(和例項變數型別相同) + 引數名(和例項變數名相同)

getter 方法的作用:獲取單一的例項變數的值.

getter 方法的命名規範: - 號方法,有返回值 (返回值型別和例項變數型別相同) 方法名直接和例項變數名相同. 無引數.

屬性

屬性是oc2.0之後出來的新的語法,用來替代

setter以及getter方法,使用屬性可以快速建立setter以及getter方法的宣告,setter以及getter方法的實現.另外還新增了對例項變數操作的安全處理

@property用來定義屬性

nsstring * 屬性的型別(和例項變數型別相同)

name 屬性名(和例項變數名相同)

切記:@property只是自動宣告setter以及getter 方法的宣告

屬性的定義:

屬性的宣告:使用@property 宣告屬性例如:(@property nsstring *name;)

相當於 @inte***ce 中宣告了兩個方法:

- (void)setname :(nsstring *)name;

- (nsstring *)name;

屬性的實現:使用@synthesize 實現屬性(例如:@synthesize name = _name)
相當於@implementation實現了

- (void)setname:(nsstring *)name;

- (nsstring *)name;

@synthesize name = _name;

注釋:

@synthesize 屬性的實現部分,實現屬性自動生成的setter 以及 getter方法.

name 屬性名,指定要實現哪乙個屬性生成的setter 以及 getter 方法

_name,指定setter 和 getter方法內部所要操作的例項變數

如果指定的例項變數沒有定義,系統會自動生成指定的例項變數,但是生成的例項變數是私有的,子類不能直接訪問

如果例項變數想讓子類訪問, 那在.h檔案必須定義例項變數.

如果未指定setter 和 getter 內部所要訪問的例項變數時, 系統自動生成乙個和屬性名一樣的例項變數

例如:@synthesize name, gender, age, height, weight;

如果對於setter和getter方法,如果我們實現了,系統就不會再自動生成了

如果在.m檔案中未通過@synthesize對屬性進行合成,系統會自動合成,只不過此時系統預設的setter和getter方法內部所操作的例項變數是_屬性名

如果將@synthesize省略,並且我們自己實現setter以及 getter方法時,系統就不會生成對應setter以及 getter,還有例項變數

如果@synthesize

不省略,並且我們自己實現

setter

以及getter

方法時,系統還會生成例項變數,如果不自己實現setter 和 getter方法,系統照樣給實現

屬性的特性(attribute)

第一大特性:讀寫特性

(1)readonly:告訴編譯器,屬性在自動生成方法時,只會生成getter方法,不會生成setter方法.

(2)readwrite:告訴編譯器,屬性在自動生成方法時,既要生成setter方法,也要生成getter方法.系統預設的讀寫特性

(3)setter = aa: 告訴編譯器,當自動生成setter方法時,setter方法的方法名為指定的名字aa,不採用預設的.

(4)getter = bb: 告訴編譯器,當自動生成getter方法時,getter方法的方法名為指定的名字bb,不採用預設的.

第二大特性:原子性特性

(1)atomic: 原子特性,保證執行緒安全,內部做了安全性訪問理(加鎖與解鎖).系統預設的原子特性

(2)nonatomic:非原子性,不保證執行緒安全

因為對於setter以及getter方法的使用,比較頻繁,在一段時間內可能要多次訪問,所以使用atomic會非常消耗系統的資源,降低程式的執行效率,使用nonatomic雖然不保證執行緒的     安全,但是使用一般情況下都是安全的,所以對於原子特性,使用nonatomic.

第三大特性:語義特性

(1)assign: 直接賦值,使用針對於基本資料型別(int float).也可針對於物件型別.系統預設的語義特性.

(2)copy: 針對於物件型別並且要服從nscopying協議的物件才可以.會複製出乙個新的物件,擁有新的物件的所有權.(引用計數+ 1).(先暫時這麼理解)

(3)retain:針對於物件型別,會造成物件的引用計數+ 1

setter 以及 getter方法,內部是對例項變數賦值以及例項變數的取值操作,所以方法內部要操作例項變數

1.當把語義特性宣告為assign時, setter 以及 getter 方法內部實現

- (void)setname:(nsstring *)name

- (nsstring *)name

2.當把語義特性宣告為retain時, setter 以及 getter 方法內部實現

- (void)setname:(nsstring *)name

}- (nsstring *)name

3.當把語義特性宣告為copy時, setter 以及 getter 方法內部實現

- (void)setname:(nsstring *)name

}- (nsstring *)name

點語法

點語法 ,是一種

快速訪問 setter以及 getter方法的方式.宣告屬性預設生成對應的setter以及 getter方法.所以

屬性和setter和 getter方法都有關聯

物件.屬性名  ---如果在等號的左邊,意味著呼叫setter方法,除此情況,都是呼叫getter方法

OC屬性總結全

setter 方法的作用 為單一的變數賦值.setter 方法規範寫法 1.號方法,無返回值.名字以set開頭 要設定的變數的例項變數名 首字母要大寫 setter方法有且只有乙個引數 引數的型別 和例項變數型別相同 引數名 和例項變數名相同 getter 方法的作用 獲取單一的例項變數的值.get...

OC 內容屬性總結

1 取值 nstextalignmentleft 0,左對齊 nstextalignmentcenter 1,居中對齊 nstextalignmentright 2,右對齊 2 哪些控制項有這個屬性 一般能夠顯示文字的控制項都有這個屬性 uitextfield uilabel uitextview ...

OC物件和屬性

類和物件 世間一切東西都可以當作物件.c中的資料型別有 int,float,double,char等等.類是物件的型別.封裝 物件中包括屬性和方法,用屬性和方法共同體現物件的特性,稱為封裝.oc的基本資料型別有 nsinteger 整型 nsuinteger 無符號整型 cgfloat 浮點型 ch...