封裝在目標c中
回答
實際上,兩者都有。
由於nacho4d表示,您將類實例變量封裝在您的類中,並通過使用方法和屬性讀取和寫入它們的值來阻止對它們的直接訪問。這確保實例始終知道何時讀取或寫入了值,而直接ivar訪問與在C結構中設置值沒有區別。
然而,從@implementation
分離@interface
也對封裝有很大貢獻。過去幾年中語言的增強的一個目標是增加這種分離所提供的封裝程度。
即,類的主要@interface
現在只能包含您希望其他開發人員/代碼與您交互的類的部分。公共界面,如果你願意。 所有的實現細節可以從最新編譯器中的@interface
中移出,包括所有實例變量。
這不完全正確; 32位OS X Cocoa,因此也是iPhone模擬器,仍然需要在頭文件中聲明所有實例變量,以便它們的順序是明確的。請參閱http://cocoawithlove.com/2010/03/dynamic-ivars-solving-fragile-base.html – Tommy 2010-12-12 18:39:05
使用最新的開發人員工具和64位ABI,我認爲確實可以在類中聲明實例變量擴展接口。有人糾正我,如果我錯了。 Yup; – 2010-12-12 18:45:18
是的;並且在最新的iOS版本中,模擬器的運行時間(儘管是32位)與設備上的運行時間一樣工作! – bbum 2010-12-12 20:21:57
後者。從wikipedia:
語言機制限制 訪問某些對象的 組件。
具體來說,在Objective-C中,默認情況下,ivar將受到保護,所以它們只能在相同的類或子類中進行訪問。可以根據需要將其更改爲@private或@public。
您提到的方法是訪問器(getter和setter),在這種情況下,您可能想要使用@properties,因爲它們可以在1行中定義,並且可以設置一些屬性,如retain,assign,copy,readonly等 繼續閱讀物業here (Apple doc)
隱藏類方法和變量從一類到另一類稱爲封裝。
- 1. 在eclipse中封裝項目
- 2. 在C++中打破封裝
- 3. 在C#中封裝GUI和在Visual C++中封裝應用程序
- 4. 如何在C#中將腳本標記封裝到cdata中?
- 5. 封裝C#新手
- 6. SocketCAN C++封裝器
- 7. C win32封裝器
- 8. 如何在xcode 8.1中更改目標的封裝擴展?
- 9. Notepad ++:在標籤中封裝文本
- 10. iOS如何在Swift項目中封裝C++類
- 11. 在DLL中封裝C#GUI組件
- 12. 在C#中封裝IntPtrs數組#
- 13. 在C#中如何實現SIP封裝
- 14. 用C++封裝C代碼
- 15. 無形安裝在目標C中
- 16. 封裝在Java中
- 17. 封裝在OOP中
- 18. MP3封面標註在C#
- 19. Ada封裝庫項目GNAT
- 20. S/MIME封裝郵件C#
- 21. Objective-C和數據封裝
- 22. 使用OpenALPR C#封裝
- 23. 使用CXXI封裝C++庫
- 24. C#的封裝原生DLL
- 25. C++日誌封裝設計
- 26. OpenNI C#封裝:WaitAnyUpdateAll超時
- 27. 用C基本封裝
- 28. 合併兩個C++封裝
- 29. 封裝與多個類C#
- 30. C#繼承封裝代碼
9個問題,沒有被接受的答案,沒有投票和似乎不願使用維基百科。這是怎麼回事? – Abizern 2010-12-12 18:33:16