完全不知道該代碼應該完成什麼。它似乎打破了關於初始化方法的每一個約定。從初始化方法返回一個void指針有什麼意義?初始化方法的全部要點是返回一個對象。在蘋果的代碼示例中,你看到了這個嗎?
話雖如此,我不明白它爲什麼會泄漏。由於它不返回對象,因此該方法不會泄露任何內容。有可能是內部泄露的東西。
編輯:
It basically does an NSURLConnection. Because we are submitting a lot of forms with a lot of different values we put it in an external class. All the delegate methods like didFailWithError: are in NSURLRequest and connectionDidFinishLoading just passes the data to its delegate. So it doesn't really need to return anything as it is done through a delegate method.
是的,你需要重新設計這一點。目前,這種方法只是一場等待發生的災難。如果沒有別的,看着這個代碼的其他人都會對你在做什麼感到困惑。
如果您不需要保留創建的對象,然後移動它的分配並完全在一個方法內清理。將方法名稱前綴從「initialize」更改爲「setup」,「configure」,「acquire」等等,這樣的名稱並不意味着它會創建並返回對象。
如果您需要某個特定類的一次性實例,請使用類似Michael Aaron Safyan建議的類方法(同樣不要在名稱中初始化)。類方法應該在內部初始化一個實例,執行所需的操作,返回數據到任何地方,然後釋放實例。
這樣,您就不必擔心泄漏,並且可能會讀取您的代碼的其他人(包括您自己的月份)都會立即明白代碼的作用。
我會/不會/使用任何代碼以'-initializeSomething'開始的方法:任何人不知道足夠的Objective-C來命名他們的方法'-initSomething'可能不會正確地避免泄漏:可能聽起來很刺耳,像這樣的一個簡單的錯誤可能實際上表明對工具集不熟悉。 – 2010-03-23 03:53:26
:/雖然你有一個點不是一個挑選?他可能會對縮短單詞充滿激情。其餘的代碼不會泄漏 – Rudiger 2010-03-23 04:25:35
Rudiger:遵循適當的命名約定是/總是/一個好主意。 – 2010-03-25 01:04:58