1.為了強制一個對象隱藏其數據,編譯器限制實例變量范圍以限制其在程序中的可見性。
但是為了提供靈活性,蘋果也讓開發者顯示設置范圍(四選一)。
2.四種編譯指令如下:
@PRivate
實例變量只能被聲明它的類訪問。
@protected
實例變量能被聲明它的類和子類,所有沒有顯示指定范圍的實例變量都是@protected。
@public
實例變量可以在任何地方被訪問。
@packge
使用modern運行時,一個@package實例變量在實現這個類的可執行文件鏡像中實際上是@public的,但是在外面就是@private。
OC中的@package與C語言中的變量和函數的private_extern類似。任何在實現類的鏡像之外想使用這個實例變量都會引發link error。
這個類型最常用于框架類的實例變量,使用@private太限制,使用@protected或者@public又太開放。
新聞熱點
疑難解答