首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对方法中的变量使用弱限定符

对方法中的变量使用弱限定符
EN

Stack Overflow用户
提问于 2013-07-12 21:09:33
回答 1查看 138关注 0票数 2
代码语言:javascript
运行
复制
- (void)showWeakValue
{
    NSString * __weak weakString = [[NSString alloc] initWithFormat:@"First Name: AA"];
    NSNumber * __weak weakNum = [[NSNumber alloc] initWithInt:10];
    NSLog(@"weakString =  %@", weakString);
    NSLog(@"weakNum  = %@",weakNum);
}

输出为

代码语言:javascript
运行
复制
 weakString =  (null)
 weakNum  = 10

为什么weakNum不为空?因为没有其他对weakNum的强引用,所以应该在赋值后立即释放它。对吗?

EN

回答 1

Stack Overflow用户

发布于 2013-07-12 21:17:15

NSNumber是免费桥接到开源的CFNumber的。从http://www.opensource.apple.com/source/CF/CF-476.19/CFNumber.c中可以看到,NSNumber缓存了创建的对象中介于(-1)和12之间的整数值,因此由

代码语言:javascript
运行
复制
[[NSNumber alloc] initWithInt:10]

永远不会释放,并且多个调用返回相同的实例。

代码语言:javascript
运行
复制
[[NSNumber alloc] initWithInt:1000]

你可能会看到一种不同的行为。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17615679

复制
相关文章

相似问题

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