将static void *强制转换为NSObject *

安德烈·马林卡斯(Andrei Marincas)

我有更多这样的常量:

static void * MyContext = &MyContext;

现在我想发布一个NSNotification并在其userInfo字典中包含此上下文,但是在将其强制转换为NSObject *并将其放入NSDictionary时遇到了问题。我正在使用__bridge进行转换,但在运行时得到EXC_BAD_ACCESS。

将void *强制转换为NSObject *是否有一些限制?唯一不会崩溃的转换是__bridge_transfer,但是在添加到字典时会崩溃。我用光了所有选项,并考虑完全放弃void *,而改用NSString *。

马丁·R

您不能任意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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将void *强制转换为struct *

来自分类Dev

将volatile表达式的结果强制转换为void

来自分类Dev

将结构ProcessSerialNumber强制转换为UnsafePointer <Void>

来自分类Dev

将std :: shared_ptr <T>强制转换为void *

来自分类Dev

为什么将signal()的结果强制转换为(void)?

来自分类Dev

C / C ++将void *强制转换为int(*())(int,...);

来自分类Dev

将结构ProcessSerialNumber强制转换为UnsafePointer <Void>

来自分类Dev

将UnsafeMutablePointer <Void>强制转换为我的结构类型

来自分类Dev

函数指针将参数强制转换为 void

来自分类Dev

无法将'void(MyClass :: *)()'转换为'void(*)()

来自分类Dev

将std :: function <void()>转换为void(*)()

来自分类Dev

将 void (*)() 转换为 void (*)(unsigned char)

来自分类Dev

将int转换为void *

来自分类Dev

C:将void(*)(void *)转换为void(*)(char *)

来自分类Dev

在将void指针强制转换为float * / int *时取消引用

来自分类Dev

将参数传递给可变参数函数时,强制转换为void *有什么作用?

来自分类Dev

使用reinterpret_cast将函数强制转换为void *,为什么它不是非法的?

来自分类Dev

如何正确地将指向Blob的void指针强制转换为结构指针?

来自分类Dev

Swift将unsafemutablepointer <MyStruct>强制转换为swift中的C void返回指针

来自分类Dev

在C语言中,将指针强制转换为struct ao void *的指针有什么用?

来自分类Dev

将void指针强制转换为结构体并对其进行初始化

来自分类Dev

C - 将函数调用返回值强制转换为 void

来自分类Dev

将派生对象存储到void *,然后将基础对象强制转换为void *是不安全的吗?

来自分类Dev

为什么在C ++中不允许将static_cast从int(*)(int)转换为void *?

来自分类Dev

将NSObject转换为NSDictionary

来自分类Dev

将NSObject转换为NSDictionary

来自分类Dev

将NSObject转换为double

来自分类Dev

将NSObject转换为NSDictionary

来自分类Dev

将地址转换为函数:使用“ void * void”

Related 相关文章

  1. 1

    将void *强制转换为struct *

  2. 2

    将volatile表达式的结果强制转换为void

  3. 3

    将结构ProcessSerialNumber强制转换为UnsafePointer <Void>

  4. 4

    将std :: shared_ptr <T>强制转换为void *

  5. 5

    为什么将signal()的结果强制转换为(void)?

  6. 6

    C / C ++将void *强制转换为int(*())(int,...);

  7. 7

    将结构ProcessSerialNumber强制转换为UnsafePointer <Void>

  8. 8

    将UnsafeMutablePointer <Void>强制转换为我的结构类型

  9. 9

    函数指针将参数强制转换为 void

  10. 10

    无法将'void(MyClass :: *)()'转换为'void(*)()

  11. 11

    将std :: function <void()>转换为void(*)()

  12. 12

    将 void (*)() 转换为 void (*)(unsigned char)

  13. 13

    将int转换为void *

  14. 14

    C:将void(*)(void *)转换为void(*)(char *)

  15. 15

    在将void指针强制转换为float * / int *时取消引用

  16. 16

    将参数传递给可变参数函数时,强制转换为void *有什么作用?

  17. 17

    使用reinterpret_cast将函数强制转换为void *,为什么它不是非法的?

  18. 18

    如何正确地将指向Blob的void指针强制转换为结构指针?

  19. 19

    Swift将unsafemutablepointer <MyStruct>强制转换为swift中的C void返回指针

  20. 20

    在C语言中,将指针强制转换为struct ao void *的指针有什么用?

  21. 21

    将void指针强制转换为结构体并对其进行初始化

  22. 22

    C - 将函数调用返回值强制转换为 void

  23. 23

    将派生对象存储到void *,然后将基础对象强制转换为void *是不安全的吗?

  24. 24

    为什么在C ++中不允许将static_cast从int(*)(int)转换为void *?

  25. 25

    将NSObject转换为NSDictionary

  26. 26

    将NSObject转换为NSDictionary

  27. 27

    将NSObject转换为double

  28. 28

    将NSObject转换为NSDictionary

  29. 29

    将地址转换为函数:使用“ void * void”

热门标签

归档