我是 Objective C 的新手,我有一些疑问。我发现您可以访问类的属性,例如var->我的属性也喜欢那样变量.myProperty,但我不知道2之间有什么区别。我在互联网上搜索了很多,但确实没有找到确凿的答案。
抱歉,如果我有拼写错误,请提前致谢。
需要考虑三种情况:
someObject.something
is the 点语法。它完全相当于[someObject something]
在行为方面。这是一个方法调用。注意something
不必通过声明@property
。那是,someArray.count
or someString.length
两者在语法上都是有效的。
self->something
正在直接访问 ivar。这是一种很少使用的语法;罕见的是在几乎从来没有。相反,只需使用直接访问 ivarsomething =
or [something doSomething]
。无需->
.
otherObject->something
正在四处搜寻otherObject
的实例变量直接。糟糕的程序员。没有甜甜圈。不要那样做。它破坏了封装并导致代码极其脆弱且难以维护。
注释@property
声明。如果你有:
@property (atomic, strong, readonly) SomeClass *foo;
如果你让编译器自动@synthesize
一切,它将创建一个名为的实例变量_foo
.
您应该在您的init
and dealloc
方法,但通常(但并非总是)在其他地方使用 setter/getter。 IE。在你的init
你会做_foo = [SomeClass someClassWithSomeMagicValue:42]
(假设 ARC,所以没有retain
需要)。在其他地方,你会这样做[[self foo] castMagic];
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)