我正在尝试在 Objective-C 中实现类似于 C# 委托概念的东西。我认为它可以完成,但我正在努力让它发挥作用。我已经为我的块设置了一个类型 def:
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 不允许这样做。
有谁知道如何解决这个问题?