iOS實(shí)現(xiàn)簡單的block

OC中的block主要用來保存一段代碼,在需要的時(shí)候執(zhí)行。
下面是一個(gè)小的例子:

#import "ViewController.h"

@interface ViewController ()

/** myblock(定義一個(gè)block) */
@property(nonatomic,copy) void(^myblock)();
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
//    如果忘記block怎么寫,可以使用“inlineblock”。oc會(huì)自動(dòng)提示
//    <#returnType#>(^<#blockName#>)(<#parameterTypes#>) = ^(<#parameters#>) {
//        <#statements#>
//    };
    
    __weak  UIViewController *self1 = self;
//    __block UIViewController *self1 = self;
    /** block代碼塊 */
    self.myblock = ^{
        NSLog(@"我被執(zhí)行了");
        self1.view.backgroundColor = [UIColor colorWithRed:arc4random()%10/10.0f green:arc4random()%10/10.0f blue:arc4random()%10/10.0f alpha:1];
    };
    
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    NSLog(@"%s",__func__);
    //執(zhí)行block
    self.myblock();
}

@end

ps:

  1. 如果忘記block怎么寫,可以使用“inlineblock”。oc會(huì)自動(dòng)提示哦!
  2. 屬性要使用copy屬性
  3. 防止循環(huán)引用,如果在block塊代碼中使用,要使用弱類型,用__weak和__block修飾
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 《Objective-C高級(jí)編程》這本書就講了三個(gè)東西:自動(dòng)引用計(jì)數(shù)、block、GCD,偏向于從原理上對這些內(nèi)容...
    WeiHing閱讀 9,902評論 10 69
  • iOS代碼塊Block 概述 代碼塊Block是蘋果在iOS4開始引入的對C語言的擴(kuò)展,用來實(shí)現(xiàn)匿名函數(shù)的特性,B...
    smile刺客閱讀 2,375評論 2 26
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,211評論 30 472
  • 1,黑屏是啥?先看看黑屏的樣子吧。 2,為啥黑屏?想想黑屏常常發(fā)生在啥時(shí)候?場景1:開機(jī)360提醒你軟件更新,漏洞...
    龍少俠linux閱讀 775評論 0 3
  • 你說你喜歡生如夏花,我說我偏愛那些花兒。 當(dāng)我們的青春漸行漸遠(yuǎn),當(dāng)時(shí)間的齒輪樂此不疲地轉(zhuǎn)動(dòng),我們卻自以為還停...
    Timeless_Augs閱讀 278評論 0 2