Block的用法

1.block作為屬性

寫法1:typedef聲明block名稱

typedef id(^Block_Name)(id arg1, id arg2);
@property (nonatomic, copy) Block_Name block;

寫法2:直接書(shū)寫

@property (nonatomic, copy) id(^Block_Name)(id arg1, id arg2);

2.block作為參數(shù)

寫法:

- (void)method:(id(^)(id arg1,id arg2))argBlock;

3.block作為返回值

- (void (^)())walk;
//實(shí)現(xiàn)
- (void(^)())walk{
    return ^(){
        NSLog(@"走起");
    };
}

block作為返回值可以實(shí)現(xiàn)簡(jiǎn)單的鏈?zhǔn)骄幊?/p>

- (Person *(^)(int))eat;
- (Person *(^)(int))sleep;

//實(shí)現(xiàn)
- (Person *(^)(int))eat{
    return ^(int dun){
        NSLog(@"吃了%d頓",dun);
        return self;
    };
}

- (Person *(^)(int))sleep{
    return ^(int minute){
        NSLog(@"又睡了%d分鐘",minute);
        return self;
    };
}

通過(guò)上面的寫法,person可以無(wú)限的調(diào)用eat以及sleep方法,因?yàn)檫@2個(gè)方法返回的都是person類本身,還可以傳入block的參數(shù),我們還可以通過(guò)這個(gè)用法來(lái)修改對(duì)應(yīng)類的變量,使之寫起來(lái)有種鏈?zhǔn)降母杏X(jué),調(diào)用后:

Person *person = [Person new];
person.eat(10).sleep(20).eat(30).sleep(100);
最后編輯于
?著作權(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)容