我們可以在可可中使用一個接口和實現文件嗎? 如果是,那麼在哪個文件中使用哪一個?我們可以在目標c中使用接口和實現文件嗎?
回答
除非你不想讓你的任何對象相互交談,或者除非你想使用純粹的動態類型(每個變量類型爲id
,幾乎沒有編譯時的完整性檢查)並且沒有子類化任何你自己的類的意圖。
如果在頭文件中沒有@interface
,則不能將該@interface
導入另一個類的實現文件中,以使其方法和屬性聲明可用。在頭文件中使用@implementation
,您將會看到鏈接錯誤,因爲預處理器會將@implementation
複製到所有位置。
隨着@interface
S IN頭文件和@implementation
S IN實現文件,您的每個@implementation
恰好一個實現文件,以及@interface
的可用無論你需要他們,這樣既可以使編譯器做更多的檢查和編輯器提供更多更智能的完成。我不明白爲什麼你想在Objective-C中切換到單個文件類模式。
我已經把一個類的接口和實現放在一個文件之前,但它是一個私人類(或類別),所以它是在類的實現文件用它。 – ughoavgfhw 2011-01-14 07:44:22
@ughoavgfhw:是的,它適用於僅作爲另一個類的實現細節存在的類或類別。不過,你不能爲你的公共類(在你的應用程序中被其他對象/類使用)執行此操作。 – 2011-01-14 08:43:36
我們可以在一個可可中使用接口和實現文件嗎?
是的,你可以。實際上,當我有一個類工廠時,我經常這樣做,並根據傳入的參數給出不同子類的實例。
如果是,那麼在哪個文件中使用哪個文件?
.m文件中的所有內容。如果你把它全部放在.h文件中,它就不會被編譯,除非你將.h文件包含在某個.m文件中。要注意的是,儘管就編譯器而言,這給你類似於靜態變量的文件範圍,但就鏈接器而言,類符號仍然是全局範圍的。如果在不同的.m文件中有兩個相同名稱的類,則該鏈接可能會失敗並出現重複的符號錯誤或兩個錯誤。
- 1. 我們可以在c#中使用接口實現多態嗎?
- 2. 我可以在C#中使用子類實現接口嗎?
- 3. 我可以在.h文件中的C#中實現一個接口嗎?
- 4. 我可以在C++中實現多個回調接口嗎?
- 5. 我們可以使用Dispose方法而不實現IDisposable接口嗎?
- 6. 我們可以使用xcode在Facebook中實現autoshare嗎?
- 7. 我們可以在C#項目中使用COM對象嗎?
- 8. 我可以在接口和實現行中縮進函數和屬性嗎?
- 9. 可以重載接口的實現嗎?
- 10. 我們可以在C#.NET的接口中添加變量和屬性嗎?
- 11. 我們可以使用Scribe Workbench寫入(目標)文本文件嗎?
- 12. 我可以在c#項目中添加.h和.cpp文件嗎?
- 13. 我們可以在Windows上編譯目標c嗎?
- 14. 一個接口有兩個類型參數。我可以使用兩種類型的接口來實現接口嗎,這樣它們就可以兼容了嗎?
- 15. 我可以發現JMX接口嗎?
- 16. 我們可以使用asp.net和c#從localhost發送郵件嗎?
- 17. 我們可以使用C#比較兩個JavaScript文件嗎?
- 18. 我可以在C#項目上使用.rc資源文件嗎?
- 19. 現在我們可以在DjEng中使用GAE中的ORM嗎?
- 20. 誰/什麼實現我可以直接使用的接口?
- 21. 我們可以使用繼承來實現鏈表嗎?
- 22. 我們可以使用akka.event.Logging在文件中寫入日誌嗎?
- 23. 實現接口方法時,我應該使用@Override標記嗎?
- 24. 我們可以在C++/VC++中訪問ODB ++文件(PCB)嗎?
- 25. 我可以使用增強現實嗎?
- 26. 我們可以使用AJAX和XHTML嗎?
- 27. 我可以使用FileStream來實現文件鎖嗎?
- 28. 我們可以在接口中有成員變量嗎?
- 29. 我們可以在Nuget Package Creation中創建接口嗎?
- 30. 在C++中實現接口
您失去了使用Cmd-Opt-UpArrow立即在接口和實現之間切換的魔法能力。文件太多? – 2011-01-14 05:30:50