2010-02-18 18 views
0

是的我以前見過類似的問題,但他們都是基本上想從頭開始的人。我來自AppleScript Studio(對於那些不知道它的人來說,它是Apple的Xcode中的AppleScript等)。對我來說唯一的東西新的與接口和實現文件有關。在我的代碼中,我已經寫了2000多行ObjC,所以它不是語法。但我無法理解繼承,從其他類文件訪問變量等。我使用ObjC的方式是在IB中有一個NSObject,它的類由我更改爲新的東西,然後將所有代碼寫入該實現文件中。我最大的問題是要找出如何訪問其他類的參數。來自AppleScript Studio並不理解某些東西的ObjC的新手

那麼,你們任何人都有從哪裏開始的提示?通常我會從頭開始寫一本書,但我似乎相當能夠編寫代碼,只要它位於一個大文件中即可...

感謝您的幫助。

回答

1

雖然您瞭解Interface Builder,但很明顯,您完全不瞭解Objective-C或Cocoa。你需要停止徘徊,爲自己奠定語言和框架的基礎。正確做到這一點的唯一方法是從頭開始。

你應該從學習Objective-C開始。在我看來,最好的辦法是閱讀Stephen Kochan的超棒Programming in Objective-C 2.0。這將教你如何正確編寫Objective-C並解釋面向對象編碼,類繼承等等。你應該閱讀書的封面並進行所有練習。

然後你應該閱讀Aaron Hillegass的'Cocoa Programming for Mac OS X,它將教你如何把Objective-C和它結合到Interface Builder和Cocoa框架來生成工作的Cocoa應用程序。

您還應該閱讀Cocoa Design Patterns,它將解釋Cocoa中的設計模式以及如何使用它們來以正確的方式編寫Cocoa應用程序。

-1

我會建議你的「問題」與Objective-C無關,以及與面向對象設計有關的一切。我會得到一本很好的面向對象的書,例如設計模式(Gamma等),面向對象的軟件構造(Meyer)等等。我建議不要在這部分教育中使用Objective-C(使用Java),因爲你很容易將軟件設計與學習Cocoa(和其他)框架混淆。一旦你瞭解了這一點,你就可以探索如何應用Objective-C,Cocoa框架如何使用面向對象技術等。

然後享受!

PS:編寫代碼的能力不是你的目標,特別是如果代碼位於一個大文件中。

+0

設計模式(四人幫)書是__NOT__開始嘗試理解面向對象分析和麪向對象設計的好地方。 Head First Object Oriented Design and Anaylsis [http://www.amazon.com/Head-First-Object-Oriented-Analysis-Design/dp/0596008678/ref=sr_1_1?ie=UTF8&s=books&qid=1266524284&sr=8-1 ]書是你想要開始的地方。 Objective-C是學習OOA/OOP原理並實現它們的良好語言。 – 2010-02-18 20:18:34

+0

我同意你的一般前提,他的問題是他對軟件設計一無所知,但是你的實際建議讓我覺得非常錯誤。設計模式對設計很有幫助,但在這些工具對您有用之前您需要有一個基礎。 Cocoa鼓勵使用某些設計技術,所以我不明白爲什麼學習Java對想要了解如何設計Cocoa程序的人更有益。 – Chuck 2010-02-18 20:22:20

+0

因爲他一直生活在AppleScript Studio中一段時間​​;離開Cocoa框架正是他所需要的。 [雖然我認爲我同意模糊語言的GOF評論] – Bill 2010-02-18 20:33:49

2

我對這些Cocoa開發者中心教程的運氣非常好,他們的和組織良好,你應該可以跳過你覺得你已經知道的任何部分。

  1. http://cocoadevcentral.com/articles/000081.php(C)
  2. http://cocoadevcentral.com/d/learn_objectivec/(的OBJ-C)
  3. http://cocoadevcentral.com/d/learn_cocoa/(可可部分1)
  4. http://cocoadevcentral.com/d/learn_cocoa_two/(可可第2部分)
  5. http://cocoadevcentral.com/articles/000082.php(風格部分1)
  6. http://cocoadevcentral.com/articles/000083.php (Style part 2)

這聽起來像你可以跳過第一個(C),但它可以不傷害,以消除它。第二個(Obj-C,尤其是第5部分,設計類接口以及之後)是您當前問題的答案所在。祝你好運!

+0

謝謝朋友!這將是一個巨大的幫助! – Jef 2010-02-18 20:53:55

1

我可以將您對Objective-C編碼的特定方面的困惑聯繫起來。用於傳遞參數和訪問對象屬性的符號與其他C型環境完全不同。使用@synthesize指令創建您的對象屬性(如果適用)可以很長的一段時間來確保一致的行爲。還要記住,Obj-C使用'super'關鍵字來訪問基礎對象而不是'base'。

當我第一次學習Obj-C時,我從this Apress guide得知,認爲這是從C/Java背景到理解Obj-C的語法和對象/繼承模型的有用轉換。

+0

謝謝。我一定會看看它。我知道我需要@synthesize來訪問這些變量,但我不知道它是如何工作的,什麼時候真的需要它,什麼時候不需要。 「超級」的事情與我猜想的繼承有關,所以這就是我失敗的地方。 – Jef 2010-02-18 20:47:49

相關問題