我拿例如UIButton
接口。Apple如何管理@private var和@properties?
这里@private
定义的第一行:
@private
CFMutableDictionaryRef _contentLookup;
UIEdgeInsets _contentEdgeInsets;
UIEdgeInsets _titleEdgeInsets;
在这里这些实例变量的2,被定义为属性:
@property(nonatomic) UIEdgeInsets contentEdgeInsets;
@property(nonatomic) UIEdgeInsetstitleEdgeInsets;
然而,这些2种性质不会对高德I所定义在私人方法中找到(后缀为_
)。
我不知道如何实现setter和getter这两个属性来引用私有ivars。
第二个问题......我用来为伊娃创建属性,因此,如果我有一个ivar FOO
我可以为FOO
创建一个@property
。这是一个正常的行为,为一个不存在的伊娃制造财产吗? (在这种情况下,contentEdgeInsets
不是此类的属性......相反_contentEdgeInset
在@interface
中定义,这是一个有效的伊娃)。好吧,我错过了这个论点?
Omg ...我是一个白痴:P我从来没有使用过这些选项,并忘记考虑这一点...但为什么把它定义为私人..而不是允许公共访问。这听起来很奇怪。 – MatterGoal 2011-04-13 13:10:42
不,你不是个白痴:)。公共访问是通过一个属性并为该类提供封装。他们有朝一日例如摆脱伊娃的制作contentEdgeInsets @dynamic因为你是通过属性访问它,它绝不会影响你的代码。 – Joe 2011-04-13 13:12:33
好的,然后是一种类似于C++的方法,为私有属性定义访问器方法。 – MatterGoal 2011-04-13 13:18:14