過去に書いたコードをモダナイズして新しいアプリケーションを設計しています。この古いコードはクラス/デリゲート モデルを使用しており、デリゲートのものではなくブロックをコールバックとして使用するように変換しようとしています。
私がしていることは、次のようなプロパティを作成することです
@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.
これは可能ですか?