我正在通过对过去编写的代码进行现代化改造来设计一个新的应用程序。这个旧代码使用类/委托模型,我试图将它们转换为使用块作为回调,而不是委托的东西。
我所做的是创建一个像
@property (nonatomic, copy) void (^onTouch)(NSInteger index);
这将使用该类将一个可以插入代码的块传递给对象,在这种情况下,可以在触摸时执行。
但我的问题是这个。当您使用委托并且您在委托协议上有一个方法时,如果您使用该类并忘记实现委托协议,Xcode 会发出警告。这是用块做的方法吗?或者换句话说:如果调用者没有定义回调块,有没有办法让 Xcode 抱怨?
我的意思是这是正确的:
MyClass *obj = [[MyClass alloc] init];
obj.onTouch = ^(NSInteger *index){ //call back code to be executed };
这也可以
MyClass *obj = [[MyClass alloc] init];
obj.onTouch = nil;
但这会产生一条消息
MyClass *obj = [[MyClass alloc] init];
// no callback block defined.
这可能吗?