簡單的講,構造函數就是在建立一個對象的時候起到初始化的作用,對這個對象裡的一些成員變量進行初始化,析構函數就是在對象被删除進行一些清理工作,也就是專門的掃尾工作,下面用代碼來進行具體說明。
一、構造函數
在OC中凡是已init開頭的函數我們都稱之為構造函數,在聲明構造函數的時候,不帶參數的一般直接聲明為“-(id)init”,帶參數的一般聲明為“-(id)initWith...”。
<a></a>
這段代碼裡,在Person類中聲明了,兩個初始化函數,第一個帶參數第二個不帶參數,在對對像進行初始化的時候,帶參數的初始化函數顯得更為靈活,裡面的初始值可以自己改動。
二、析構函數
析構函數聲明為“-(void)dealloc”這個函數我們不能通過對象去人為的調用它,析構函數會在對像快要死的時候自己運作,來看代碼。
在代碼的第六行我們聲明了析構函數,并且在第11行處我們對其進行了複寫,這個函數會在執行[xiaoming release];的時候運作,因為release函數就是銷毀對象。
注意:有時候我們複寫dealloc函數的時候加上[super dealloc];會出現錯誤

這是因為ARC是iOS 5推出的新功能,全稱叫 ARC(Automatic ReferenceCounting)。簡單地說,就是代碼中自動加入了retain/release,原先需要手動添加的用來處理記憶體管理的引用計數的代碼可以自動地由編譯器完成了。該機制在iOS 5/ Mac OS X 10.7 開始導入,利用 Xcode4.2可以使用該機制。簡單地了解ARC,就是通過指定的文法,讓編譯器(LLVM3.0)在編譯代碼時,自動生成執行個體的引用計數管理部分代碼。有一點,ARC并不是GC,它隻是一種代碼靜态分析(StaticAnalyzer)工具。
解決辦法:輕按兩下中間的工程名稱,進入build setting
将中間的Objective-C Automatic Reference Counting改為no就OK了!