1
我創建了一個NSTimer並每15秒調用一次。我打電話的方法使Web服務呼叫。在這種方法我寫這篇文章的代碼:這會泄漏內存
GetData *ws = [[GetData alloc]init];
[ws GetSomeData:156];
[ws release];
在這裏,我做實例來調用Web服務方法,撥打電話和釋放對象的類。這種方法好壞嗎?
我創建了一個NSTimer並每15秒調用一次。我打電話的方法使Web服務呼叫。在這種方法我寫這篇文章的代碼:這會泄漏內存
GetData *ws = [[GetData alloc]init];
[ws GetSomeData:156];
[ws release];
在這裏,我做實例來調用Web服務方法,撥打電話和釋放對象的類。這種方法好壞嗎?
這裏沒有泄漏,但如果你想要做ws
什麼,不要release
它,autorelease
它來代替。
這是正確的做法。你是alloc
它,所以你擁有它,而且你必須用release
它完成它之後。
作爲便箋,您的方法名稱GetSomeData
不遵循可可命名約定:它應該是someData
。
你能解釋爲什麼autorelease改爲釋放嗎? – 1110
發送'release'會將'retainCount'設置爲零(在你的例子中),你的對象將被釋放。 'autoreleased'閒談你的對象的釋放。所以你在這裏分配/初始化它,獲取數據,立即釋放它。後來使用'ws'可能會導致崩潰 – 2011-07-21 08:33:38
您應該閱讀http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml ..它提供了一些提示和最佳實踐。他們建議儘可能使用autorelease,因爲如果您忘記添加版本,它會最大限度地減少泄漏的可能性:) – Bastian