從今天開始學習OS X編程,《蘋果開發(fā)之Cocoa編程》(第四版)第2章 起步的例程就把我難住了〕ぃ快速的看完一遍不難理解掀抹,跟MFC很像√蚴荆可是動起手來比著做的時候,發(fā)現(xiàn)問題挺多的。主要是這本書的XCode版本比較老里伯,當在XCode 6.4上做的時候,很多內(nèi)容已經(jīng)不一樣了渤闷。搞了兩個小時疾瓮,終于把問題都解決了,備忘一下肤晓。
項目的創(chuàng)建向?qū)儆胁顒e爷贫,不過問題不大,一路回車完成即可补憾。但項目的基本框架和書里的已經(jīng)不一樣了漫萄。書中由向?qū)傻闹饕募腥齻€:RandomAppDelegate.h, RandomAppDelegate.m和MainMenu.xib。在XCode6.4中則有五個盈匾,如下:
在2.2.5節(jié)中要創(chuàng)建一個RandomController類腾务,并添加NSTextField類型的成員變量textField,問題就出在了這里削饵,因為我添加完了之后編譯出了一個錯誤岩瘦,說NSTextField是無法識別的數(shù)據(jù)類型未巫。我在這里卡了很久,我從cocoa.framework中能找到NSTextField的定義启昧,我猜測可能是因為include path設(shè)置的問題叙凡,可是書里面完全沒提要修改include path呀,我懷疑在前面的#import寫錯了密末,可是下了原書的源代碼握爷,發(fā)現(xiàn)人家就是這么寫的。我去書的論壇上找了一下严里,發(fā)現(xiàn)有人也遇到了這個問題新啼,解決的辦法是修改#import<Foundation/Foundation.h>為#import <AppKit/AppKit.h>。
先不忙跟著改刹碾,再看看原書中RandomController的作用是什么燥撞?貌似是程序主界面,這不就是XCode向?qū)傻腣iewController的作用么迷帜?也就是說新版XCode生成的代碼框架應(yīng)該是做了更好的封裝物舒,把視圖類也幫你生成出來了,因此應(yīng)該就不需要再創(chuàng)建這個RandomController類了瞬矩。是這樣嗎茶鉴?我把書中安在RandomController下面的屬性和方法寫到ViewController類中,發(fā)現(xiàn)編譯通過了景用!
這樣寫邏輯上是否正確還要看把控件和類成員涵叮、方法連接以后是否能正常運行。接下來完成綁定操作吧伞插,原書中叫做連接割粮,我連想起了當年學習MFC時叫做綁定的概念,應(yīng)該都是一回事媚污。新版XCode中這個操作和書上的也不太一樣了舀瓢。
點開Main.storyboard,在ViewContro頂部的藍色按鈕處右鍵耗美,彈出如下菜單:
鼠標挪到textField右側(cè)的圓圈中京髓,圓圈變?yōu)榧犹枺鸭犹柾系絃abel控件上商架,如下圖所示堰怨,完成ViewController的成員變量textField和Label控件的綁定:
同樣的方法,把Received Action中的generate和seed綁定到兩個按鈕上:
接下來就可以在ViewController.m中完成seed和generate兩個成員函數(shù)的編寫蛇摸。完成后運行备图,發(fā)現(xiàn)結(jié)果符合預期!這說明之前的猜測是正確的:新版XCode幫你完成了RandomController類的生成,只需要在這個類中填寫新控件和響應(yīng)函數(shù)即可揽涮!