初始化函式:[[類名 alloc] init]//巢狀呼叫優
[類名 new]
(id) init
return
self;
}//init
一定要在指定初始化函式中呼叫超類的指定初始化函式。如果初始化函式不止乙個,則需要選擇乙個作為指定初始化函式(引數最多的初始化函式優),其他初始化函式則應該呼叫指定初始化函式。
.h中宣告的屬性和成員變數均可以在子類中訪問到,類似protected,而.m則不可,類似private@property(copy)nsstring * name//宣告訪問方法
//assign:預設選項,基礎資料型別 (nsinteger)和c資料型別
//copy:nsstring,copy字串後需要在dealloc中release
//retain:其他nsobject及其子類
//readwrite:預設選項,可讀可寫
//readonly:唯讀
//getter= 或setter= 自定義方法名
@dynamic
//不自動建立變數或訪問方法,當不想儲存某個屬性,並且在執行時計算時使用,需要自己實現訪問方法
點表示式:
物件.例項變數 當點表示式在等號左邊,呼叫setter,反之則呼叫getter
為現有的類增加新的方法self.name=@"car";
[self
setname:@"car"];
命名風格:「類名稱+類別名稱」
缺點:
1.不能新增例項變數,只能新增屬性,且必須是@dynamic(方便使用點表示式);
2.名稱衝突,類別優先。
優點:
1.分散**到不同檔案或框架;
2.建立對私有方法的前向引用:新建類別,在類別檔案中宣告原始類的該方法,就能呼叫該私有方法;
3.向物件新增非正式協議:任何類只要實現委託方法就可以成為委託物件。
變數繫結分為自動繫結:棧記憶體和託管繫結:堆記憶體@protocal 協議名《父協議名》//宣告協議
@optional
//可選是否實現
@required
//必須實現
@end
@inte***ce 類名:父類名 《協議名1,協議名2>//採用協議
@end
返回型別可以手動宣告也可以由編譯器推導
具有指定型別的引數列表
擁有名稱
int (^square_block)(int number) = ^(int number) ;
//返回型別 (^**塊名) (引數列表)=^(引數列表);
//返回型別可以省略,如果**塊沒有引數,引數列表也可以省略
int result = square_block(5);
nsarray *sortedarray = [array sortedarrayusingcomparator:^(nsstring *object1, nsstring *object2) ];//直接使用**塊
typedef
double (^mksamplemultiplyblockref)(void);
double a = 10, b = 20;
mksamplemultiplyblockref multiply = ^(void);//**塊會在定義時複製並儲存狀態,將本地變數視作常量,return 200;
nslog(@"%f", multiply());//200
a = 20;
b = 50;
nslog(@"%f", multiply());//200,如果a和b為static,則返回1000
__block double c = 3;
mksamplemultiplyblockref multiply = ^(double a, double b) ;//**塊將本地變數視作常量,而__block表明c是可修改的
obc學習筆記2
格式化 control i 左移 command p 協議 c 類 k 列舉 常量 v 成員變數 f 函式 m 成員方法 g 全域性變數 define指令 t typedef型別導航條標記 mark todo fixme 範圍nsrange nsrange range1 range1.loction...
學習筆記4
第五單元 使用者 使用者組和許可權 1.使用者 a.每乙個使用者建立都會有乙個uid和gid b.所有使用者的資訊儲存在 etc passwd檔案中 c.每乙個能登陸系統的使用者都有乙個可以使用的shell,用cat etc shells命令可以看到可以使用的所有shell 注 其中 bin sh,...
學習筆記 4
結構體定義 typedef struct sqlist sqlist struct sqlist 刪除函式 第一版 bool listdelete sqlist list,int index for int j index j l.length 1 j l.length return true 第二...