寻找合适的Objective-C对象来包装C void*指针

寻找合适的Objective-C对象来包装C void*指针,objective-c,Objective C,我正在从事一个在Objective-C代码中嵌入了C代码的项目。C代码生成一些void*指针,我想在Objective-C方法之间传递这些指针,所以我想将它们包装在Objective-C对象中,以生成NSSet或类似的东西 我研究了NSData,它似乎接受任意数据,但想知道我没有的内存块的长度 感谢您的帮助。本课程通常用于此任务: NSValue* value = [NSValue valueWithPointer: myPointer]; 及 不过,请注意,给定的指针在内存管理方面不会得到任

我正在从事一个在Objective-C代码中嵌入了C代码的项目。C代码生成一些void*指针,我想在Objective-C方法之间传递这些指针,所以我想将它们包装在Objective-C对象中,以生成NSSet或类似的东西

我研究了NSData,它似乎接受任意数据,但想知道我没有的内存块的长度

感谢您的帮助。

本课程通常用于此任务:

NSValue* value = [NSValue valueWithPointer: myPointer];

不过,请注意,给定的指针在内存管理方面不会得到任何特殊处理。只要指向该内存区域的指针存在并且可以在程序的某个部分访问,您和您自己就有责任确保它所指向的内存保持有效

但是,请注意,将此类值与NSSet一起使用或作为NSDictionary中的键使用可能会也可能不会产生预期效果:

NSData本质上是一个字节缓冲区。它实际上代表了相关内存的内容。在字节级别比较NSData实例是否相等。这是其中一个原因,NSData需要知道有关内存区域的长度

带有指针值的NSValue是一个完全不同的beast。在这里,实际的数字指针值是最基本的。将两个NSValue实例与地址的实际内容进行比较时,不考虑任何因素。

该类通常用于此任务:

NSValue* value = [NSValue valueWithPointer: myPointer];

不过,请注意,给定的指针在内存管理方面不会得到任何特殊处理。只要指向该内存区域的指针存在并且可以在程序的某个部分访问,您和您自己就有责任确保它所指向的内存保持有效

但是,请注意,将此类值与NSSet一起使用或作为NSDictionary中的键使用可能会也可能不会产生预期效果:

NSData本质上是一个字节缓冲区。它实际上代表了相关内存的内容。在字节级别比较NSData实例是否相等。这是其中一个原因,NSData需要知道有关内存区域的长度


带有指针值的NSValue是一个完全不同的beast。在这里,实际的数字指针值是最基本的。将两个NSValue实例与地址上的实际内容进行比较时,不考虑任何问题。

为什么不将c结构或数组指针传递给objective-c代码?您可以这样做[myObject setPointers:指针大小:10];//指针可以是一个空的**指针数组,大小可以是数组中指针的数量谢谢你们,我会考虑一下。为什么不把c结构或数组指针传递给objective-c代码呢?您可以这样做[myObject setPointers:指针大小:10];//指针可以是一个空的**指针数组,大小可以是数组中指针的数量谢谢你们,我会考虑的。这正是我想要的。综合回答,谢谢@对于[NSNumber numberwhithint:x]我们可以直接使用@x,int被包装。指针也有这样的功能吗?@neeraj-似乎,唯一受支持的指针类型是@。。。自动装箱功能是char*。根据我所寻找的,这一个不会被包装成一个NSNumber,而是被转换成一个NSString。综合回答,谢谢@对于[NSNumber numberwhithint:x]我们可以直接使用@x,int被包装。指针也有这样的功能吗?@neeraj-似乎,唯一受支持的指针类型是@。。。自动装箱功能是char*。根据该协议,该文件不会被包装成NSNumber,而是转换成NSString