---------------------------asp.net+unity開發、.net培訓、期待與您交流!----------------------------
一、利用點語法替換set方法和get方法
1.方法呼叫
student *stu = [student new];
[stu setage:10];
int age = [stu age];
這是set和get的物件呼叫方法
2、點語法
stu.age = 10;
int age = stu.age;
這就是點語法,點語法的實質還是方法呼叫
當使用點語法時,編譯器會自動展開成相應的方法 ,即:
stu.age = 10;
相當於[stu setage :10];
3、常見錯誤
- (void) setage:(int)age
- (int) age
以上**會發生死迴圈;
二,作用域
區域性變數、全域性變數都有自己的作用域,成員變數也不例外
@private:只能在當前類的物件方法中直接訪問
@protected:可以在當前類以及子類的物件方法中直接訪問
@public:任何地方都可以直接訪問
@package:同乙個「體系內」(框架)可以訪問,介於@private和@public之間
三、@property
用在@inteface中
用來自動生成setter和getter的宣告
用@property int age;就可以代替下面的兩行
- (int)age; //getter
- (void)setage:(int)newage; //setter
@inte***ce person :nsobject
- (int)age;
- (void)setage:(int)newage;
@property int age;
@end;
四、@synthesize
用在@implementation中
用來自動生成setter和getter的實現
用@synthesize age = _age;就可以代替
-(int)age
-(void)newage :(int)age
注意:@synthesize age = _age;
setter和getter實現中會訪問成員變數_age
如果成員變數_age不存在,就會自動生成乙個@private的成員變數_age
@synthesize age;
setter和getter實現中會訪問成員變數age
如果成員變數age不存在,就會自動生成乙個@private的成員變數age
手動實現
若手動實現了setter方法,編譯器就只會自動生成getter方法
若手動實現了getter方法,編譯器就只會自動生成setter方法
若同時手動實現了setter和getter方法,編譯器就不會自動生成不存在的成員變數
自從xcode 4.x後,@property就獨攬了@synthesize的功能。也就是說,@property可以同時生成setter和getter的宣告和實現
五、id
萬能指標,能指向任何oc物件,相當於nsobject *
id型別的定義
typedef struct objc_object *id;
id p = [person new]; //注意id後不加*號;
六、物件的建立原理
1.new的兩部曲:
1)分配記憶體(+alloc)
2)初始化(-init)
person *p1 = [person alloc];
person *p1 = [p1 init];
合成一句後:
person *p = [[person alloc] init];
2,init方法的重寫
在物件建立完畢後,成員變數馬上就有一些預設的值
- (id)init
return self;}
3、自定義的構造方法
構造方法的一些規範:
返回值是id型別
方法名都以init開頭
- (id)initwithage:(int)age
return self;}
七、多檔案程式設計
每個類分布在不同檔案中
類的宣告放在.h檔案,類的實現放在.m檔案
若想使用某個類,就包含某個類的.h宣告檔案
---------------------------
asp.net+unity開發、.net培訓、期待與您交流!
----------------------------
oc基礎語法 oc特有語法(1)
1 根據以前學的,呼叫方法是這樣的 student stu student new stu setage 100 int age stu age 如果用點語法,這樣就可以呼叫了 stu.age 100 int age stu.age 2 點語法的本質 其實點語法的本質還是方法呼叫,當使用點語法時,編...
OC特有語法 多型
多型 指標以父類型別宣告,但實際執行時指向的是其某個子類的物件,當用這個指標呼叫方法時,會根據其指向的不同子類物件呼叫不同的物件方法。這種現象叫多型。多型的前提是子類會覆蓋父類的方法。多型的應用 需要乙個新的函式專門用來餵狗 void feed dog d 如果這個時候也需要喂貓,那就應該重寫新乙個...
OC特有語法 SEL
sel就是對方法的一種包裝。包裝的sel型別資料它對應相應的方法位址,找到方法位址就可以呼叫方法。在記憶體中每個類的方法都儲存在類物件中,每個方法都有乙個與之對應的sel型別的資料,根據乙個sel資料就可以找到對應的方法位址,進而呼叫方法。inte ce person nsobject void t...