调用者此时不拥有的对象的引用计数的不正确的减少对于retain属性

时间:2013-06-20 20:06:00

标签: ios iphone objective-c memory-management

我使用retain属性创建了一个NSString fName属性,并合成了该属性。  我在viewDidLoad上初始化了该属性。

我的实际问题是,我使用[self.fName release]。此示例工作正常,但静态分析器将此行显示为错误'调用者不在此时拥有的对象的引用计数的错误减少'。

参考代码:

@interface ViewController : UIViewController

@property(nonatomic,retain)NSString *fName;

@end

@implementation ViewController
@synthesize fName;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.fName =@"Hello";

    [self.fName release];//Analyzer showgin error here.

}
---------
------
end

1 个答案:

答案 0 :(得分:0)

没有必要在那里释放。你没有分配/初始化任何东西。如果你这样做:

self.fName = [[NSString alloc] initWithString:@"Hello"]; 

然后你必须释放self.fName。

根据经验,numberOfReleases = numberOfAlloc。

现在,黄金法则,使用ARC:)