最近有人在堆棧溢出告訴我下面的代碼不漏,該財產處理保留本身:iPhone:這是一個泄漏或不
self.locationManager = [[CLLocationManager alloc] init];
中的dealloc:
self.locationManager = nil;
在.h文件中:
@property (nonatomic, retain) CLLocationManager *locationManager;
我認爲這是一個明顯的泄漏,並認爲這應該可以修復泄漏:
self.locationManager = [[[CLLocationManager alloc] init] autorelease];
但他聲稱不會工作,因爲用他的話說:「你不會自動釋放一個類的屬性。一個屬性的自動生成的訪問定義爲保留會自動處理保持」
,他讓我懷疑他是錯的還是我不明白,在所有的內存管理
編輯1:是的代碼
self.myName=[NSSting stringWithFormat:@"%@ is correct.", @"TechZen"];
比
self.locationManager = [[[CLLocationManager alloc] init] autorelease];
內存管理明智的有什麼不同?
這傢伙說第一個是正確的,拒絕第二個。爲什麼第二個是錯誤的?據我可以看到,兩個分配autoreleased實例的一些屬性,但不知何故仍然存在一個固執的論點,第二個是錯誤的。我看不到它,任何幫助都會如此受歡迎。
在你的編輯1上,保留智慧,他們是一樣的。這些對象都只保留一次。所有便利功能都有一個隱含的自動釋放功能。如果你在init語句中沒有看到alloc這個詞,那麼這個變量是自動釋放的。如果你使用alloc,你應該使用autorelease – 2010-02-12 23:23:56