《OC瘋狂講義》筆記(五)

2021-06-28 04:53:10 字數 2870 閱讀 3226

1、oc中的點語法

點語法: 物件名.成員變數名   (點語法不是訪問成員變數,而是方法的呼叫)

它是乙個編譯器特性

點語法作用:可以替換傳統的get和set方法的呼叫

點語法的前提:

首先得先有 get和set方法

點語法實質:

呼叫get和set方法

如果點語法出現在 = 的左邊,表示設定值,相當於呼叫了set方法

p.age = 10;

替換為:[p setage:10];

如果點語法出現在 = 的右邊,表示獲取值,相當於呼叫了get方法

int age = p.age;

替換為:int age = [p age];

替換為:[p dispage:p.age];

[p dispage:[p age]];

注意:點語法實質是呼叫get和set方法,所以,如果沒有定義成員變數的get和set方法,這個時候,是不能使用點語法的。

2、@property使用、增強

1)@property 在xcode4.4之前的使用方法

(1)只是用@property作為方法的宣告『

格式:@property int age;  表示幫我們生成乙個get和set age的方法

@property int age;

-(void)setage:(int) age;

-(int)age;

//手工實現 get和set方法

-(void)setage:(int) age

-(int)age

@property int _age;

-(void)set_age:(int) _age;

-(int)_age;

@property nsstring *name;

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

-(nsstring*)name;

(2)@synthesize 關鍵字

@synthesize 變數名;

自動幫我們實現對應的get和set方法

@synthesize age,_age;

@synthesize 相當於幫我們實現了下面的方法

-(void)setage:(int) age

-(int)age

@synthesize name;

(3)@synthesize name = _b;

@property nsstring *name;

@synthesize name;     // get和set方法設定的是 name的值

@synthesize name = _b; //相當於操作_b的值

-(void)setname:(nsstring *) name

-(nsstring *)name

注意:在4.4之前,@property和@synthesize成對出現

2)@property 在xcode4.4之後(@property增強)

增強使用:

@property int score;

1).h檔案中 幫我們宣告 setscore(setter) 和 score(getter)方法

2).m 中幫我們生成 _score的私有變數(在外部不能訪問,不能被子類繼承)

3).m 中幫我們實現 get和set方法

3、@synthesize的使用

4、動態型別&id型別

動態型別:程式在執行的時候,才能確定物件屬於什麼型別

靜態型別:程式編譯的時候,就確定了物件的型別

動態型別的體現: 多型,父類指標可以指向子類物件

nsobject 是所有類的基類

nsobject *obj = [dog new];

obj = [person new];

父類呼叫子類特有的方法

[(person *)obj eat];

//id型別,id型別又被稱為 萬能指標。

id obj;  //執行時檢查

obj = [car new];

[(car*)obj stop];

5、動態型別檢測的方法

7個方法

1)物件所屬關係判斷

物件是否是指定類或者子類的例項物件

iskindofclass

物件是否是指定類的例項物件

ismemberofclass

類是否是另外乙個類的子類

issubclassofclass

2)判斷能否響應方法

物件是否能夠響應方法

類是否能夠響應方法

類去響應方法

3)響應方法

傳引數6、構造方法的使用

[person new];

->   [person alloc]; //空間申請完後,不能立即使用,有可能會導致意想不到的錯誤

->   [[person alloc] init];

[person new];  會把我們的成員變數的值,預設的設定為0

init 是我們oc類的乙個構造方法

構造方法是類建立的時候,預設呼叫的

init 是繼承自 nsobject 的

在子類中通過重寫父類的init方法,指定成員變數初始化值

init方法的固定格式:

-(id)init

//返回

return self;

}7、自定義構造方法

如果要指定成員變數值的初始化,需要自定義構造方法

1)一定是物件方法

2)返回值 一般是 id型別

3)一定是以initwith開頭

-(id)initwithname:(nsstring *) name

//返回

return self;

}

《OC瘋狂講義》筆記(三)

1 類方法 1 什麼是類方法 物件方法 返回值型別 方法名 形參的型別 形參名 類方法 返回值型別 方法名 形參的型別 形參名 2 類方法怎麼去定義 返回值型別 方法名 形參的型別 形參名 3 類方法的使用 呼叫 物件方法 物件名 方法名 實參 類方法 類名 方法名 實參 4 使用類方法的好處 1 ...

C語言瘋狂講義 (五)C語言迴圈語句

1 迴圈控制 迴圈是程式語句的一種結構,當條件滿足的時候,一直重複執行某一段 當條件不滿足的時候,需要退出迴圈 正常情況下,夠成迴圈結構三個要素 1 迴圈結束的條件 2 得有迴圈體 3 有乙個操作可以讓迴圈條件為假 2 while迴圈 當型迴圈 當 滿足時候,然後.格式 while 表示式 計算機首...

python瘋狂講義筆記(列表元組和字典)

python內建的 三種常用資料結構 列表 list 元組 tuple 和 字 典 dict 列表和元組比較相似,它們都按順序儲存元素 每個元素都有自己的索引,因此列表和元組都可通過索引訪問元素 二 者的 區 別 在 於元組是不可修改的,但列表是可修改的 字典則以 key value的形式儲存資料 ...