来自方法的'引用返回'NSString
:
scanString:intoString:
scanCharactersFromSet:intoString:
scanUpToString:intoString:
scanUpToCharactersFromSet:intoString:
在调用实例拥有的NSScanner
类中(在自动释放池中保留计数为1且 NOT )或NSScanner
实例(保留计数为1且在自动释放池)?
如果是后者,如果用于遍历列表,那么自动释放池气球的大小是不是?
答案 0 :(得分:2)
的
value
参数
- (BOOL)scanString:(NSString *)string intoString:(NSString **)value;
是Clang ARC文档中Indirect parameters意义上的“间接参数”:
间接参数
如果函数或方法参数的类型为
T*
,则T
为{。}} 所有权不合格的可保留对象指针类型,然后:
- 如果T是const限定的或Class,那么它是隐式限定的 __unsafe_unretained;
- 否则,它会被
__autoreleasing
隐式限定。
第二种情况适用于此。 __autoreleasing
表示:
对于
__autoreleasing
个对象,保留新的指针, 自动释放,并使用原始语义存储到左值。
因此value
指向从该函数返回时自动释放的对象。
Xcode自动完成“知道”并显示
[scanner scanString:(NSString *) intoString:(NSString *__autoreleasing *)]
已添加:有关“手动引用计数”,请参阅“高级内存管理编程指南”中的Memory Management Policy:
您不拥有参考文件返回的对象
......在这些情况下,相同的规则适用于已经描述的规则。当您调用这些方法中的任何一个时,都不会创建NSError对象,因此您不拥有它。因此没有必要释放它,......