#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool{
/*
Block是iOS中一種比較特殊的數據類型
Block的作用
-用來保存某一段代碼,可以在恰當的時間取出來調用
-功能類似函數和方法
Block和函數一樣,
有返回值,有形參
有返回值,沒形參
無返回值,有形參
無返回值,無形參
*/
/*
void代表block將來保存的代碼沒有返回值
()代表block將來保存的代碼沒有形參
(^roseBlock)代表roseBlock是一個block變量,可以用于保存一段block代碼
*/
void (^roseBlock)();
roseBlock = ^{
NSLog(@"roseBlock");
};
//調用block
roseBlock();
}
return 0;
}
練習
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool{
//先定義在初始化
void (^numBlock)();
numBlock = ^{
NSLog(@"numBlock");
};
numBlock();
//定義的同時初始化
void (^Block)() = ^{
NSLog(@"block");
};
Block();
//無參有返回
NSString *
(^StrBlock)()= ^{
return [NSString stringWithFormat:@"StrBlock"];
};
NSLog(@"%@",StrBlock());
//有參數有返回
int (^sumBlock)(int ,int )= ^(int value1 ,int value2)
{
return value1+value2;
};
NSLog(@"sumBlock = %i",sumBlock(20,30));
NSString
*(^stringBlock)(NSString*)= ^(NSString* str){
NSString *s = [NSString stringWithFormat:@"%@",str];
NSLog(@"%@",s);
return s;
};
stringBlock(@"lxc");
}
return 0;
}
用typedf給block起別名
#import <Foundation/Foundation.h>
typedef int(^calculate)(int,int);
int main(int argc, const char * argv[]) {
@autoreleasepool{
calculate sumBlock =^(int value1,int value2)
{
return value1 +value2;
};
NSLog(@"sumBlock =%i",sumBlock(20,10));
calculate subBlock =^(int value1 ,int value2)
{
return value1 - value2;
};
NSLog(@"subBlock =%i",subBlock(20,10));
}
return 0;
}
Block的應用場景
#import <Foundation/Foundation.h>
void goToWorkDay1();
int main(int argc, const char * argv[]) {
@autoreleasepool{
goToWorkDay1();
}
return 0;
}
/*
block的應用場景:前后都一樣中間不一樣的時候可以用block
下面函數中void goToWork(void (^myBlock)())方法中包含一個block
需要在當前方法中實現block
在void goToWorkDay1()調用goToWork myblock會當做形參傳遞到函數中
*/
void goToWork(void (^myBlock)())
{
NSLog(@"吃飯");
myBlock();
NSLog(@"睡覺");
}
void goToWorkDay1()
{
goToWork(^{
NSLog(@"敲代碼");
});
}
void goToWokrDay2()
{
goToWork(^{
NSLog(@"打豆豆");
});
}
Block
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- 簡介 block可以當做匿名函數,可以在兩個對象間將語句當做數據來進行傳遞。具有封閉性closure,方便取得上下...
- 使用Block的地方很多,其中傳值只是其中的一小部分,下面介紹Block在兩個界面之間的傳值: 先說一下思想: 首...
- 本章目錄 Block截取自動變量 __block說明符 Block存儲域 __block變量存儲域 Block中截...
- __block修飾對象類型 編譯結果: 結構示意圖: __block修飾的對象數據類型的變量也能實現block內外...