bos*_*rol 0 iphone memory-leaks memory-management objective-c ios4
我使用Xcode 4在iPhone iOS上开展项目.
使用Xcode>产品>分析我得到35个问题,所有这些类型:
myTextField.text = [[NSString alloc] initWithFormat:@"0.2f", abc];
Run Code Online (Sandbox Code Playgroud)
问题是"分配给......的对象的潜在泄漏"
什么是有害物体,我该如何释放它?
谢谢
您正在泄漏您分配给myTextField.text的字符串.发生此分配时,正在制作副本(请查看文档中的属性定义).在大多数情况下,当值是不可变的时(如NSStrings的情况),副本将为您提供一个实例,该实例指向与正在复制的对象相同的位置,并且保留计数加1.
如果您的代码:
myTextField.text = [[NSString alloc] initWithFormat:@"0.2f", abc];
Run Code Online (Sandbox Code Playgroud)
您分配的字符串的保留计数为2.
您将需要(1)释放,(或自动释放)字符串,或(2)使用NSString方便方法之一,例如stringWithFormat:来创建字符串.这将为您提供一个自动释放的字符串,因此您不必担心明确释放它.
(1)
NSString *str = [[NSString alloc] initWithFormat:@"0.2f", abc];
myTextField.text = str;
[str release]
Run Code Online (Sandbox Code Playgroud)
要么
myTextField.text = [[[NSString alloc] initWithFormat:@"0.2f", abc] autorelease];
Run Code Online (Sandbox Code Playgroud)
(2)
myTextField.text = [NSString stringWithFormat:@"0.2f", abc]; // autoreleased
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
578 次 |
| 最近记录: |