obc學習筆記4

2021-08-02 13:51:56 字數 2053 閱讀 4120

[[類名 alloc] init]//巢狀呼叫優

[類名 new]

(id) init

return

self;

}//init

初始化函式:

一定要在指定初始化函式中呼叫超類的指定初始化函式。如果初始化函式不止乙個,則需要選擇乙個作為指定初始化函式(引數最多的初始化函式優),其他初始化函式則應該呼叫指定初始化函式。

@property(copy)nsstring * name//宣告訪問方法

//assign:預設選項,基礎資料型別 (nsinteger)和c資料型別

//copy:nsstring,copy字串後需要在dealloc中release

//retain:其他nsobject及其子類

//readwrite:預設選項,可讀可寫

//readonly:唯讀

//getter= 或setter= 自定義方法名

@dynamic

//不自動建立變數或訪問方法,當不想儲存某個屬性,並且在執行時計算時使用,需要自己實現訪問方法

.h中宣告的屬性和成員變數均可以在子類中訪問到,類似protected,而.m則不可,類似private

點表示式:

物件.例項變數 當點表示式在等號左邊,呼叫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 第二...