我有更多像这样的常量:
static void * MyContext = &MyContext;
现在我想发布一个包含在其 userInfo 字典中的上下文的 NSNotification,但我在将其转换为 NSObject* 并将其放入 NSDictionary 时遇到问题。我正在使用 __bridge 进行强制转换,但我在运行时得到 EXC_BAD_ACCESS。
将 void* 转换为 NSObject* 是否有一些限制?唯一不会崩溃的强制转换是 __bridge_transfer 但是在添加到字典时它会崩溃。我用完了选项,正在考虑完全放弃 void* 并改用 NSString*。
你不能cast一个任意的void
指针指向NSObject
,但是你
可以包装到一个NSValue
对象
static void * MyContext = &MyContext;
NSValue *contextValue = [NSValue valueWithPointer:MyContext];
并在稍后检索指针
void *context = [contextValue pointerValue];
或者,使用 NSString
对象作为上下文
static NSString *MyContext = @"com.company.mycontext";
无需任何桥接。
关于ios - 将静态 void * 转换为 NSObject*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31649810/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |