Why do nil / NULL blocks cause bus errors when run?

前端 未结 4 1076
囚心锁ツ
囚心锁ツ 2020-12-02 06:06

I started using blocks a lot and soon noticed that nil blocks cause bus errors:

typedef void (^SimpleBlock)(void);
SimpleBlock aBlock = nil;
aBlock(); // bus         


        
4条回答
  •  广开言路
    2020-12-02 06:08

    This is my simple nicest solution… Maybe there is possible to write one universal run function with those c var-args but I don’t know how to write that.

    void run(void (^block)()) {
        if (block)block();
    }
    
    void runWith(void (^block)(id), id value) {
        if (block)block(value);
    }
    

提交回复
热议问题