iOS學習日記(四)set/get與構造函數

set和get方法
承接上一篇的內容,用p訪問_age p->_age
會報錯,因爲_age是一個被保護的成員變量
(補充編碼規範,類名首字母大寫,變量下滑線開頭)

提供方法
+類型方法 [類名 方法]
-實例方法 [對象 方法]
類不能調用實例方法。

get方法不是以get開頭,直接寫成員變量的小寫
比如對 _name 變量進行訪問 方法名寫name

//給name提供訪問方法
//在類的聲明中 聲明方法:
-(NSString*)name;

//在類的方法實現中進行實現
-(NSString*)name{
	return name;
}

主函數發送消息
NSString* name= [p1 name];//用一個字符串類型變量接收返回值
NSLog(@"name is %@",name);

get方法一定是實例方法,同理給age提供訪問方法。
聲明:-(NSInteger )age;
實現:-(NSInteger )age{ return _age};

上面學習了get方法,外部可以調用方法獲取值。
同樣也存在set方法,通過調用方法對變量的值進行修改。

方法名的約定規範是set開頭+變量名
例如對 _name進行設置set方法

//(類型說明)(函數返回值類型)方法名:(參數類型)參數名;
-(void)setName:(NSString*)name;
//類的實現
-(void)setName:(NSString*)name
{
	_name=name;
}
//主函數中使用
Person* p1=[Person new];
[p1 setName:@"小強"];
//現在p1的_name變量值爲 小強 了。

interface裏聲明的方法,必須在implementation實現,相當於對外的接口公開的
在implementation裏也可以寫沒有聲明過的方法,相當於私有的函數,共自己內部使用。

多參數方法的使用和意義
c語言中
void printTwoNumbers(int a,int b)
oc中每一個冒號後帶一個形參,第一個參數和第二個參數的冒號之間要加一個空格。(這個空格尤其重要 容易忘記)

-(void)printTwoNumbers:(NSInteger)num1 :(NSInteger)num2;

一個冒號一個參數 參數直接加空格
使用時是這樣

[t1 printTwoNumbger:5 :7];

增加標籤可以提升代碼的可讀性。在:之前加入要標註的內容
-(void)printTwoNumbers:(NSInteger)num1 SecondNumber:(NSInteger)num2;

構造函數
構造方法是實例方法 用-號
創建一個對象
[Person new];自動調用構造方法。
[[Person alloc] init];
instancetype只能作爲構造方法的返回值
系統自帶的構造方法init(無參數的) 在NSObject提供
在這裏插入圖片描述
不需要聲明

帶參數的構造方法(要用initWith…)注意W大寫
自定義的構造方法需要顯示聲明

在這裏插入圖片描述
固定格式(在if(self){}裏寫操作的步驟)
在這裏插入圖片描述
創建一個新對象,等效於//裏的
在這裏插入圖片描述
調用了系統自帶的構造方法。
使用如下,調用自定的構造函數(因爲帶有了參數)

在這裏插入圖片描述
由於-號 是實例方法,[]中第一個 要是一個對線 [Person alloc]系統給分配,返回值是一個對象類型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章