gpt4 book ai didi

ios - 将 static void * 转换为 NSObject*

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:13:52 24 4
gpt4 key购买 nike

我有更多这样的常量:

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";

无需任何桥接。

关于ios - 将 static void * 转换为 NSObject*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31649810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com