轉載請标明出處: http://blog.csdn.net/zhangxingping
屬性
Objective-C中的屬性是一種簡單的聲明和實作對象的通路方法的機制。
概述
關于屬性主要有兩個方面:我們用于聲明屬性的句法和在“點号運算符”小節中描述的相關句法。
通常我們使用過一對方法方法(getter和setter)來方法對象的屬性的。這種通路方式遵循了封裝的原則。這樣以來使用者就可以不用感覺我們在内部是如何實作getter和setter的,也不管用感覺我們内部的管理狀态。當我們的實作發生變化的時候,使用者也是感覺不到的(也是不用感覺的)。
盡管使用方法方法有着很大的好處,但是編寫這些方法方法卻不是一件容易的事情,特别是在我們必須支援垃圾回收和引用計數兩種情況的時候。更有甚者,對于使用方來說一些重要的API的屬性定義并不是非常明确。例如通路方法是否應該是線程級安全的,或者setter方法中是否應該對新的值進行複制呢?
聲明屬性重點是通過提供如下的特性來生成對應的标準的通路方法:
● 屬性的聲明清晰明确地指出了通路方法的具體行為。
● 編譯器會根據聲明屬性時的說明來自動生成通路方法。這就意味着我們隻需要編寫少量的代碼。
● 在語義上,屬性被認為是辨別符,是有作用域的。這樣編譯器就可以檢測到沒有聲明的屬性。