您好,登錄后才能下訂單哦!
OC中Blocks(塊)相當于其他語言C#,AS等等中的方法嵌套的方法。所以它寫在函數或者方法的內部。塊是以“^”為標識的。
如 :
^(void)
{
NSLog(@"I am Aonaufly");
}
^后面的括號之中是一個參數列表 , 因為沒有參數所以寫void。
通用 , 可以將一個塊聲明成一個變量:
void (^print_message)(void) = ^(void){
NSLog(@"I am Aonaufly");
};
意思是:
等號(=)左邊的print_message 沒有參數和返回值的塊。
在main中聲明并調用一下:
結果為:
現在來看看帶參數的情況:
int main(int argc, const char * argv[]) {
@autoreleasepool {
void (^hasParam)(int) = ^( int u ){
NSLog(@"param is %d" , u);
};
hasParam(12);
}
return 0;
}
可以看出:
hasParam只是給出了參數的類型(多個參數使用,隔開),并沒有給出參數的名稱 。而在右邊的塊中就相對應的給出了參數類型及其參數名稱。
結果為:
如何寫帶有返回值的塊。
int main(int argc, const char * argv[]) {
@autoreleasepool {
int (^hasParam)(int) = ^( int u ){
return u;
};
NSLog(@"hasParam return is %d" , hasParam(12));
}
return 0;
}
可以看出 : 如果想要有返回值 , 則直接在等號最左邊加一個返回的類型 , 本例返回的是int:
結果:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。