2 alllllllll alllllllll 于 2013.06.21 10:41 提问

iphone-应用报错incorrect decrement

创建NSString属性,并且合成属性,在viewDidLoad中对属性进行初始化。

问题:使用 [self.fName release],静态分析其显示错误
'Incorrect decrement of the reference count of an object that is not owned at this point by the caller'.

相关代码:

@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个回答

zhanglei5415
zhanglei5415   Rxr 2013.06.21 11:30
已采纳

对于控制器中的引用类型的释放,我们通常会把它放到- (void)dealloc -(void)viewDidUnLoad 中来处理,而不是在使用的过程中。在使用的过程中去释放对象可能导致其它地方对该对象的引用无效,致使在访问相关对象时导致程序崩溃。 常用的做法是

-(void)viewDidUnLoad {
    self.fName=nil;
    [super viewDidUnLoad];
}

-(void)dealloc {
  [_fName release];
  [super dealloc];
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!