我正在開發一個IOS應用程序。我用XCode工具進行了分析,如果我不寫autorelease,然後顯示「潛在的內存泄漏」消息。這是以下代碼塊中的錯誤。我不確定。IOS @property,@synthesize內存泄漏
//TransferList.h
@property (nonatomic,retain) WebServiceAPI *webApi;
//TransferList.m
@implementation TransferList
@synthesize webApi;
- (void)viewDidLoad
{
[super viewDidLoad];
self.webApi = [[[WebServiceAPI alloc] init] autorelease];
}
- (void)dealloc
{
[webApi release];
[super dealloc];
}
這不是一個巨大的東西,但通常你會做'@合成的WebAPI = _webApi;'我會得到的內存泄漏有時並改變這種方式似乎幫助。我相信'iOS6'這個是自動完成的,所以你根本不需要'@ synthesize'。 – Popeye
也許你可以分享一些關於你的web服務類的細節。儀器會告訴你泄漏物體的分配位置,而不是泄漏的根源。你是否通過靜態分析器運行你的代碼(「分析」Xcode的「產品」菜單)?可能是一個保留週期(例如,引用'self'的塊變量)或類似重複保留Web服務對象的'NSTimer'。 – Rob
另外,您是否確認視圖控制器本身正在發佈(即視圖控制器本身沒有保留週期)?也許在'dealloc'中放置斷點或'NSLog'並確保它被調用。 – Rob