我有更多像这样的常量:
static void * MyContext = &MyContext;
现在我想发布一个包含在其 userInfo 字典中的上下文的 NSNotification,但我在将其转换为 NSObject* 并将其放入 NSDictionary 时遇到问题。我正在使用 __bridge 进行强制转换,但我在运行时得到 EXC_BAD_ACCESS。
将 void* 转换为 NSObject* 是否有一些限制?唯一不会崩溃的强制转换是 __bridge_transfer 但是在添加到字典时它会崩溃。我用完了选项,正在考虑完全放弃 void* 并改用 NSString*。
Best Answer-推荐答案 strong>
你不能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/
|