? ? 1.如果需要保持一個對象不被銷毀,可以使用retain.在使用完對象后,需要使用release銷毀
? ? 2.給對象發送release消息并不會銷毀對象,只有當這個對象的引用計數減為0時,對象才會被銷毀.然后系統會發送dealloc消息給這個對象用于釋放它的內存.
對使用了retain或者copy,mutableCopy,alloc或者new方法的任何對象,以及具有retain和copy特性的屬性進行釋放需要覆蓋dealloc方法,使得對象在釋放的時候能夠釋放這些實例變量.
? ? 3.在自動釋放池被清空時也會自動釋放的對象做些事情.系統每次都會在自動釋放池被銷毀的時候發送release消息給池中的每個對象.如果池中的對象引用計數減為0, 系統會發送dealloc消息銷毀這個對象.
? ? 4.如果在方法中不再需要這個對象但需要將其返回,可以給這個對象發送autorelease消息用以標記這個對象延遲釋放.autorelease消息并不會影響到這個對象的應引用計數.
? ? 5.當應用終止時,內存中的對象都會被釋放, 不論他們是否都在自動釋放池中.
當開發Cocoa或者iOS應用程序時, 隨著應用程序的運行自動釋放池會被創建和清空(每次的事件都會發生). 在這種情況下如果要使自動釋放池被清空后自動釋放池的對象還能夠存在,對象需要使用retain方法,只要這些對象的引用計數大于發送autorelease消息的數量就能夠在池被清理后生存下來.
? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ?--摘抄自Objective-C程序設計 第六版
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --[美]Stephen G.Kochan著
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --林冀 范俊 朱奕欣