objc和C++同為由C語言衍生出的OOP語言,但他們實現OOP的方式並不相同:在C++中,對象與方法在編譯器綁定;而在objc中,稱“方法”一詞為“消息”,在程序運行時向對象發送消息,即運行期綁定。
兩種方式各有優劣,C++注重性能,objc注重靈活。
然而運行期綁定給開發帶來問題——編程時拼寫錯了方法名,編譯器並不報錯。筆者曾debug一小時,最後發現是方法名少寫了個冒號。
為此筆者曾用過一個笨辦法——斷言某對象響應某方法,以此來排除錯誤可能。
這當然太過麻煩,其實有個簡單的方法,可以上編譯器報warning:
以Xcode 4為例,打開一個項目,在左側導航欄中雙擊項目文件:
在彈出窗口中將GCC waring項undeclared selector設為yes: