block本質:指向函式的指標
block跟函式差不多,區別在於block並不確定,可以在執行時隨時隨地編寫
**中定義乙個block:
無形參無返回值:
void (^myblock) (); //定義了乙個block型別的myblock
有形參有返回值:
int (^sumblock)(int,int); //定義了乙個傳入兩個int形參和返回int型別的block型別的sumblock
block封裝**:
//封裝無引數的**
^;//封裝有引數的**
^(int a,int b);
完整寫法:
//不帶引數的block
void (^myblock) ()=^;
//帶引數的block
int(^sum)(int,int)= ^(int a,int b);
block呼叫:
myblock(); //呼叫myblock
int a=sumblock(5,4); //呼叫sumblock並把block的返回值賦值給a
block知識點:
@protocol 協議名//定義了乙個sumblock型別,這個型別傳入兩個形參並返回兩者之和
typedef int (^sumblock) (int,int);
//用sumblock定義s並封裝**
sumblcok s=^(int a,int b)
//呼叫sumblock
int a=s(5,10);
方法宣告列表….
@end
@inte***ce 類名:父類名 《協議名1,協議名2>
@end
@protocol 協議名稱 《其他協議名稱1,其他協議名稱2>@end
要求實現宣告的方法,如果不實現,會發出警告
不要求實現類名《協議名稱》 *變數名;
id 《協議名稱》 變數名;
如:nsobject*obj;如果不遵守協議,會嚴重警告
使用情景:
如果這個協議只用在某個類中,應該把協議定義在該類中
如果這個協議用在多個類中,應該把協議定義在單獨檔案中
使用情景:
一般情況下,都是定義在單獨檔案中
定義在原來類中的分類,知道語法可行即可
OC語言學習 基本語法
1 基本資料型別 c語言基本資料型別 bool yes no 2 nil型別等同於c語言的null 3 基本語句 等同於c語言 4 注釋 等同於c語言 5 螢幕輸出 nslog hello 1 跟 include一樣,拷貝檔案的內容 2 可以自動防止檔案的內容被重複拷貝 1 主標頭檔案 最主要的標頭...
OC語言 foundation其他常用的型別
foundation其他常用的型別 首先 nsarray 不可變陣列 array陣列的建立 nsarray array1 nsarray arraywithobject jack nil是陣列元素結束的標誌 nsarray array2 nsarray arraywithobjects jack r...
語言學習 Python學習
1.關於識別符號 python 中的識別符號是區分大小寫的。以下劃線開頭的識別符號是有特殊意義的。以單下劃線開頭 foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不能用 from import 而匯入 以雙下劃線開頭的 foo 代表類的私有成員 以雙下劃線開頭和結尾的 foo 代表 ...