block開(kāi)發(fā)中使用場(chǎng)景

block 開(kāi)發(fā)中使用場(chǎng)景 適合新手理解 熟悉 運(yùn)用到項(xiàng)目中

block開(kāi)發(fā)中使用場(chǎng)景

// 1.把block保存到對(duì)象中,恰當(dāng)時(shí)機(jī)的時(shí)候才去調(diào)用

// 2.把block當(dāng)做方法的參數(shù)使用,外界不調(diào)用,都是方法內(nèi)部去調(diào)用,Block實(shí)現(xiàn)交給外界決定.

// 3.把block當(dāng)做方法的返回值,目的就是為了代替方法.,block交給內(nèi)部實(shí)現(xiàn),外界不需要知道Block怎么實(shí)現(xiàn),只管調(diào)用

1.把block保存到對(duì)象中,恰當(dāng)時(shí)機(jī)的時(shí)候才去調(diào)用

- (void)block1
{
    Person *p = [[Person alloc] init];
    void(^block)() = ^() {
        NSLog(@"執(zhí)行對(duì)象中block");
    };
    p.operation = ^(){ 
        NSLog(@"執(zhí)行對(duì)象中block");
    };
    p.operation = block;
    _p = p;
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    _p.operation();
}

2.把block當(dāng)做方法的參數(shù)使用,外界不調(diào)用,都是方法內(nèi)部去調(diào)用,Block實(shí)現(xiàn)交給外界決定.

- (void)block2
{
    Person *p = [[Person alloc] init];
    void(^block)() = ^{
        NSLog(@"吃東西");
    };
    [p eat:block];
    // 傳入block給參數(shù)的Block賦值
    [p eat:^{
        NSLog(@"吃東西");
    }];
}

person:
- (void)eat:(void (^)())block
{
    /**
    block = ^{
        NSLog(@"吃東西");
    };
     */
    block();
}

3.把block當(dāng)做方法的返回值,目的就是為了代替方法.,block交給內(nèi)部實(shí)現(xiàn),外界不需要知道Block怎么實(shí)現(xiàn),只管調(diào)用

- (void)block3
{
    Person *p = [[Person alloc] init];
    
    [p run:2];

    p.run(2);
    void(^run)() = p.run;
    run();
}

Person:
- (void (^)(int))run
{
    return ^(int meter){
        NSLog(@"跑了%d米",meter);
    };
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容