回答
[self release]
當一個對象初始化失敗實際上是鼓勵。這背後的原因主要是:在另一方面
if (self = [super init])
或
self = [super init];
if (self)
[AClass release]
似乎調用元類,其中有沒有任何影響的實例。
謝謝Josh Caswell指出我的錯誤。
最後
[super release]
應該工作酷似
[self release]
因爲這兩個
將調用NSObject中的釋放方法。
一個類對象實際上是它的元類的一個實例,它採用'NSObject'協議(聲明'release')。這是一個有效的陳述,雖然毫無意義(它們也是不朽的)。 –
你說得對。我認爲調用類的釋放會嘗試調用類方法,而不是那個實例的方法。 –
請參閱: Is calling [self release] allowed to control object lifetime? 對於前兩個。
最後一個是無效的。 (我假設ACLASS是一類,而不是一個對象
'[AClass release]'是有效的;一個類對象本身就是它的元類的一個實例。 –
有Apple sample code包含[super release]
。
而且有Apple documentation,其包括包含[self release]
代碼示例。
這些構建體可以是當有用對象初始化不會成功。
第三配方([AClass release]
)你問好像它會導致錯誤發生,雖然。
- 1. 這兩個陳述是否相同?
- 2. 這兩個陳述是否相同?
- 3. 如果陳述不正確
- 4. 陳述在C++
- 5. C無法弄清楚是否陳述
- 6. 我將如何分離這些陳述?
- 7. 我可以合併這些陳述嗎?
- 8. 這些陳述如何工作?
- 9. 這是在一箇中做兩個平等的陳述的正確方法嗎?
- 10. 如果陳述沒有正確執行
- 11. 如果陳述沒有正確評估
- 12. 邏輯陳述不正確評估?
- 13. 案件陳述輸出不正確?
- 14. 這些測試用例是否正確?
- 15. 這些MVC圖層是否正確?
- 16. 這些構造函數是否正確?
- 17. 這些編碼風格是否正確?
- 18. 這些endian轉換是否正確?
- 19. c中的這個陳述是什麼意思?
- 20. 鎖定陳述C#
- 21. 這個「&」在這個陳述中是如何工作的?
- 22. 這個C++語句是什麼意思?是否有條件的陳述?
- 23. 我是否正確編寫了這些HTML img標籤?
- 24. 這是否是正確的目標路徑
- 25. 如果陳述在案例陳述(VB.Net)
- 26. 這兩個陳述是否意味着同樣的事情?
- 27. 如何將這兩個陳述合併成一個陳述?
- 28. 如果陳述沒有正確地檢查字符串是否相等
- 29. 廚師如果使用陳述,正確的方法是什麼?
- 30. C#/ .NET項目 - 我是否正確設置了一些東西?
AClass本身就是一個類名,而不是一個類實例。 [AClass release]不會導致任何編譯器錯誤或警告。 –