首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >手动释放NSValue

手动释放NSValue
EN

Stack Overflow用户
提问于 2010-12-03 07:21:26
回答 2查看 932关注 0票数 1

是否可以使用指向C结构的指针来实例化NSValue,而不必创建自动释放池?目前,我这样做:

代码语言:javascript
复制
NSValue* val = [NSValue valueWithPointer:(const void*)structure];

但这是由自动释放池释放的。我想要控制它,并能够在我想要的时候取消分配它。这个是可能的吗?我试过这个:

代码语言:javascript
复制
NSValue* value = [[NSValue alloc] initWithBytes:(const void*)structure objCType:@encode(const void*)];
[value release];

但由于某种原因,它正在崩溃。有没有其他方法可以立即发布?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-03 07:35:30

您应该传递一个指向为objCType:参数指定的类型的指针。您正在传递类型的变量。因此,例如,如果您有一个要存储在NSValue中的变量int foo,则可以编写[[NSValue alloc] initWithBytes:&foo objCType:@encode(int)]。因此,如果你想存储一个指针,你需要将一个指针作为字节传递给该指针。传递指针本身将导致NSValue尝试跟随指针,然后将它所指向的字节也视为指针。

票数 3
EN

Stack Overflow用户

发布于 2010-12-03 19:12:28

代码语言:javascript
复制
NSValue* val = [NSValue valueWithPointer:(const void*)structure];
[val retain];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4341032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档