點語法和@property
知識點
1.setter/getter函數
2.點語法
3.@property語法和屬性
========================================
一、setter和getter函數
1.setter和getter函數的作用
setter 辦法: 修正對象的字段/實例變量
getter 辦法: 讀取對象的字段/實例變量
setter 辦法: 可以帶有多個參數,可以同時給多個變量賦值
getter辦法: 不帶參數,只能前往一個變量的值。
2.setter和getter如何命名
setter 辦法的命名:
xxx: 表示的是成員變量的名字
//帶有一個參數
- (void)setXxx:(參數類型)參數1;
//帶有多個參數
- (void)setXxx:(參數類型)變量名字 xxx:(參數類型)變量名字 ……;
getter 辦法的命名:
- (前往值類型)xxx;
=======================================
二、點語法 為了讓順序設計復雜化
隱藏了內存管理細節
隱藏了多線程、同步、加鎖
2.點語法的作用
屬性可以在不適用 【對象 辦法名字】 的狀況下運用點語法
無需調用[foo value] 可以調用foo.value 來訪問. 留意跟構造體的區別
雖然foo.value 看起來像是直接訪問value變量,但是屬性一直調用
辦法,而這些辦法又可以訪問對象的數據。
3.點語法的調用
//一個參數的set辦法可以運用點語法賦值
[xiaoxin setName:@“小新”];
//這不是運用成員變量,是運用set辦法
xiaoxin.name = @"小新";
//可以經過.語法調用get辦法
NSString * ret = [xiaoxin name];
//xiaoxin.name在等號右邊就是set辦法,運用這個表達式的值,就是get辦法
ret = xiaoxin.name;
【注】點語法只是訪問setter getter辦法,不是運用成員變量。
4.點語法和setter/getter函數的關系
【點語法和[]寫法】實質一樣,異樣是發送set和get音訊,只不過寫法不同。
dog.name = @“xiaobai”;
展開成: [dog setName: @“xiaobai”];
NSString *nameString = dog.name;
展開成: NSString *nameString = [dog name];
=======================================
三、屬性(@property)和分解(@synthesize)
1.當一個類中的成員變量十分多的時分,setter和getter能否會顯得十分臃腫,@property和@synthesize可以使代碼變得簡約。
2.@property用途
1) 讓編譯器自動聲明setter和getter
3.@property運用
1) @property 成員變量類型 變量名;
4.@synthesize用途
1)讓編譯器自動完成setter和getter函數
5.@synthesize可以省略(Xcode4.6當前可以省略)
//聲明一個屬性,相當於聲明了上面兩個辦法
@property NSString * name;
//- (void)setName:(NSString *)name;
//- (NSString *)name;
@synthesize name = _name;
//Xcode4.6以前,需求這樣完成,好像完成了上面兩個辦法
//Xcode4.6起,無需寫@synthesize,自動完成上面兩個辦法,會自動關聯名位_XXX的變量
//假如類中並沒有對應的變量,會自動生成相應的變量。
======================================
@property屬性
1.原子操作
atomic(缺省)/nonatomic
2. assign 直接賦值修飾符(缺省),普通用在根本類型。
//缺省(默許)修飾符
@property (assign) NSString * name;
//同時生成set、get辦法
直接賦值,展開的set辦法:
- (void)setName:(NSString *)name
{
_name = name;
}
3.讀寫操作
readonly/readwrite(缺省)
//只讀修飾符
//只生成getter,沒有setter
@property (readonly) NSUInteger age;
/缺省修飾符
//同時生成set、get辦法
@property (readwrite) NSString *name;
4. 給set辦法和get辦法起別名
//getter修飾符
//給get辦法起別名
@property (getter = myWeight) NSUInteger weight;
//setter修飾符
//給set辦法起別名
@property (setter = setLife:) BOOL alive;
//一個屬性可以添加多個修飾符,多個修飾符間用逗號隔開。
@property (setter = setUsername:, getter = getUsername) NSString *name;
5. 多個屬性修飾符,需求用逗號隔開
@property (nonatomic, readonly,getter = birth)
NSString * birthday;
【iOS開發-OC言語 (六)點語法和@property】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!