1、點語法
1> 本質:是方法呼叫,不是成員呼叫
2> 當使用點語法時,編譯器會自動展開成相應方法
stu.age=10
相當於 [stu
setage:10]
(賦值為set方法)
int age=stu.age
相當於int age=[stu age]
(取出為get方法)
死迴圈注意:
錄入:
-(void)
setage:(int) age
讀取:
-(int)
age
@public:任何地方都能直接訪問物件的成員變數
@private:只能在當前類的物件方法中直接訪問
@protected:能在當前類和子類的物件方法中直接訪問
2、@property和@synthesize
1>
@property用在@inte***ce中,可以自動生成某個成員變數的setter 和getter的宣告和實現
@property int
age;
// 相當於
-(void)
setage :(int)age;
//
-(int)age;
2>
@synthesize用在@implementation中,可以自動生成某個成員變數的setter和getter的實現
@synthesize age=_age
// 相當於
-(void)
setage:(int)age;
-(int)age
注意:
1、 如果只寫了@synthesize age,預設訪問age這個成員變數,如果沒有age這個成員變數,會生成age這
個成員變數
2、 @synthesize age=_age 訪問的是_age這個成員變數
3、 如果乙個類沒有定義成員變數,@synthesize age=_age會自動生成@private型別的_age變數
3、id:萬能指標,能操作任何oc物件(只適用於oc物件)
構造方法:(用來完整的建立乙個可用物件)
1. person *p=[person new];
(1)分配儲存空間
(+alloc方法)
(2)初始化
(- init方法)
new方法做的事情
呼叫+alloc方法,分配儲存空間
// person *p1=[person alloc];
呼叫- init 方法,進行初始化(初始化完畢,預設為0) //
person *p2=[p1 init];
- init 進行初始化,相當於:
person *p3=[ [ person alloc ] init ];
2. 任何物件構造之前首先要呼叫父類的構造方法(init)
3. 若想某個物件一建立出來,它的成員變數就是某個值(10),就重寫構造方法
例: - (id)
init
return self;
//返回初始化完畢的物件 }
4. 重寫構造方法的步驟:(1)呼叫父類的構造方法,初始化父類([super init])
(2)再進行子類內部成員變數的初始化
5. 自定義構造方法
規範:(1)一定是物件方法,以 - 開頭
(2)返回值一般都是id型別
(3)方法名一般以initwith開頭
-(id)initwithname:(nsstring*)name
return self;
//返回初始化完畢的物件 }
4、分類(category)(給類擴充一些方法)
1. 格式
分類的宣告:@inte***ce 類名(分類名稱)
@end
分類的實現:@implementation 類名(分類名稱)
@end
2. 作用:不改變原來類的內容的基礎上為類增加一些新的方法
3. 注意點:
1>分類只能增加方法,不能增加成員變數
2>分類的實現裡面可以增加成員變數
3>分類可是重新實現原來類中的方法,但是會覆蓋,導致原來的方法不可再用
4>分類方法優先去分類中找,然後再去原來的類中找,最後再去父類中找
5、description方法(物件方法)
2> 利用nslog和%@輸出物件時,會呼叫物件的-description方法,description方法的返回值是(nsstring*)
3>若想將物件的屬性值(age=10,name="jack")列印出來,可以重寫description方法
-(nsstring *)description
*注意點:不能在-description方法中使用nslog列印self
(死迴圈)
4>利用nslog和%@輸出類物件時,結果為類名,因為呼叫的是+description方法
6、nslog輸出
nslog(@"%p",&p)
// 指標變數的位址
nslog(@"%p",p)
// 物件的位址
nslog(@"%@",p)
//
nslog(@"%d",_ _line_ _)
// 輸出當前行號
nslog(@"%s",_ _file_ _)
// 輸出檔案路徑
nslog(@"%s\n",_ _func_ _)
//輸出所在函式名
nslog輸出語言字串的時候,不能有中文
7、sel
1>sel其實是對方法的一種包裝,將方法包裝成乙個sel型別的資料,去找對應的方法位址,找到方法地
址,就可以呼叫方法
2>每個類的方法列表都儲存在類物件中,每個方法都有乙個與之對應的sel型別的物件,根據乙個sel物件
就可以找到方法的位址進而呼叫方法
3>sel物件的建立
sel s=@selector(test);
//將test方法包裝成乙個sel型別的資料
sel s2=nsselectorfromstring(@"test");
//將字串test包裝成乙個sel型別的資料
4>sel物件的其他用法
//將sel物件轉為nsstring物件
nsstring*str=nsstringformselector(@selector(test));
person *p=[person new];
//呼叫物件p的test方法
[p performselector:@selector(test)];
黑馬程式設計師 OC基本語法
oc是c系列語言,是物件導向的語言,而c語言是面向過程的,那麼首先要理解物件導向和面向過程的區別。面向過程是專注 事件 本身,這件事從發生到結束的行為。例如怎麼把大象裝進冰箱,面向過程的思想是這樣的,首先開啟冰箱門,把大象裝進去,然後把冰箱門關上。而物件導向是專注於 事物 本身的,同樣是裝大象,物件...
黑馬程式設計師 OC物件導向之核心語法
一 點語法 點語法的本質其實就是呼叫類的set 和 get 方法,具體例子如下 person.h oc核心語法 created by lpmac on 14 5 30.import inte ce person nsobject void setage int age int age end per...
黑馬程式設計師 OC基本語法總結
黑馬程式設計師 1 oc的源副檔名是.m,oc 完全相容c語言 2 oc裡面的關鍵字大部分是以 開頭,字串以 開頭。3 nslog為oc的輸出函式,包含在import foundation為框架 foudation.h包含foundation框架裡所有的標頭檔案 即每乙個與框架名相同的標頭檔案都包含...