Objective-C で C# デリゲートの概念に似たものを実装しようとしています。私はそれができると思っていましたが、それを機能させるのに苦労しています。ブロックの型定義を設定しました。
typedef BOOL (^CompareBlock)(id obj1, id obj2);
ブロックのクラスのプロパティもあります。
@property (nonatomic, copy) CompareBlock compareBlock;
私がやりたいことはinit
、既存のメソッドへの参照を使用してメソッドにプロパティを設定することです:
BOOL isGreaterThan(id obj1, id obj2)
{
// perform some comparison
return false;
}
- (id)init
{
self = [super init];
if (self)
self.compareBlock = isGreaterThan;
return self;
}
これが正しい構文ではないことはわかっていますが、この概念をどのように実現できるかわかりません。定義したブロック typedef に関数をキャストしようとしましたが、ARC では許可されていないというエラーが表示されます。
この問題を解決する方法を知っている人はいますか?