我使用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
答案 0 :(得分:0)
没有必要在那里释放。你没有分配/初始化任何东西。如果你这样做:
self.fName = [[NSString alloc] initWithString:@"Hello"];
然后你必须释放self.fName。
根据经验,numberOfReleases = numberOfAlloc。
现在,黄金法则,使用ARC:)