我有一个 Objective-C 对象,我将一个 Block 传递给它的构造函数。这是一个特殊情况,当它完全加载时,我想在视图控制器中触发该块。但是,在该块中,我还想引用我将块传递到的对象。考虑这个例子:
typedef void (^MyBlock)();
//constructor of my object
-(id)initMyObjectWithBlock:(MyBlock)block{
self = [super init];
if(self){
myivar = block; //to be used later
}
}
//somewhere else in my app
MyObject *obj = [[MyObject alloc] initMyObjectWithBlock:^{
[obj doSomething];
}];
在那一[obj doSomething]
行,我收到“变量在被块捕获时未初始化”警告,这是有道理的。在那个块中,我需要一个对“父”对象的引用(obj
在这种情况下)。有什么办法可以做到这一点?我确实知道我的具体问题的解决方法和模式,但我想知道这样的参考是否可能。