創建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
對於控制器中的引用類型的釋放,我們通常會把它放到- (void)dealloc -(void)viewDidUnLoad 中來處理,而不是在使用的過程中。在使用的過程中去釋放對象可能導致其它地方對該對象的引用無效,致使在訪問相關對象時導致程序崩潰。 常用的做法是
-(void)viewDidUnLoad {
self.fName=nil;
[super viewDidUnLoad];
}
-(void)dealloc {
[_fName release];
[super dealloc];
}