我有更多这样的常量:
static void * MyContext = &MyContext;
现在我想发布一个NSNotification并在其userInfo字典中包含此上下文,但是在将其强制转换为NSObject *并将其放入NSDictionary时遇到了问题。我正在使用__bridge进行转换,但在运行时得到EXC_BAD_ACCESS。
将void *强制转换为NSObject *是否有一些限制?唯一不会崩溃的转换是__bridge_transfer,但是在添加到字典时会崩溃。我用光了所有选项,并考虑完全放弃void *,而改用NSString *。
您不能将任意void
指针强制转换为NSObject
,但可以将其包装到一个NSValue
对象中
static void * MyContext = &MyContext;
NSValue *contextValue = [NSValue valueWithPointer:MyContext];
并稍后获取指针
void *context = [contextValue pointerValue];
或者,使用NSString
对象作为上下文
static NSString *MyContext = @"com.company.mycontext";
无需任何桥接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句