是否可以使用指向C结构的指针来实例化NSValue,而不必创建自动释放池?目前,我这样做:
NSValue* val = [NSValue valueWithPointer:(const void*)structure];但这是由自动释放池释放的。我想要控制它,并能够在我想要的时候取消分配它。这个是可能的吗?我试过这个:
NSValue* value = [[NSValue alloc] initWithBytes:(const void*)structure objCType:@encode(const void*)];
[value release];但由于某种原因,它正在崩溃。有没有其他方法可以立即发布?谢谢!
发布于 2010-12-03 07:35:30
您应该传递一个指向为objCType:参数指定的类型的指针。您正在传递类型的变量。因此,例如,如果您有一个要存储在NSValue中的变量int foo,则可以编写[[NSValue alloc] initWithBytes:&foo objCType:@encode(int)]。因此,如果你想存储一个指针,你需要将一个指针作为字节传递给该指针。传递指针本身将导致NSValue尝试跟随指针,然后将它所指向的字节也视为指针。
发布于 2010-12-03 19:12:28
NSValue* val = [NSValue valueWithPointer:(const void*)structure];
[val retain];https://stackoverflow.com/questions/4341032
复制相似问题