对id
- 变量,我可以指定一个块并在之后调用它;使用不透明的指针ID,这不起作用(EXC_BAD_ACCESS)。
在RestKit中,userData-object是一个“不透明指针”;现在,我想为它分配一个块变量,在请求完成后调用该块。但由于这个EXC_BAD_ACCESS它不起作用。有没有机会使用这个不透明的指针来为它分配块?
非常感谢!
修改:
// this works
id testId = ^{
NSLog(@"hello");
};
testId();
// this doesn't - but it's important to know RestKit
void (^postNotification)(void) = objectLoader.userData // EXC_BAD_ACCESS
postNotification();
objectLoader的类型为RKObjectLoader
(RKRequest
的子类),API说的是userData
:An opaque pointer to associate user defined data with the request.
答案 0 :(得分:2)
你需要向我们展示你是如何创建块并将其分配给userData的,但我的猜测是你没有复制块并且它超出了范围,如下所示:
objectLoader.userData = ^{ ... };
在堆栈上创建块。这意味着当封闭它的复合语句(例如函数)结束时,该块不再有效。如果您希望块存活,则需要将其复制到堆中:
objectLoader.userData = [^{ ... } copy];