这三者,初学者往往会犯糊涂。怎么来区分呢?
属性往往和synthesize配合来产生设置器和获取器,一般建议的话,对于类的实例变量的访问通过获取和设置器。现在有了自动synthesize这个特性后就不需要在.m文件里synthesize。现在还支持只有属性,而不声明实例变量。其实属性已经隐含地生成了一个_开头的实例变量,这样我们就可以在.m文件中直接用。但是如果你既声明实例变量,又声明属性,那么自动生成的实例变量就会被隐藏,而这个往往会产生警告。除非你再synthesize一下,并且写成这个格式@synthesize someProperty=_someProperty;所以好的做法是实例变量和属性不同时使用。
点语法往往和设置获取器搞混。点语法可以方便地对属性进行读取和设置,是设置器还是获取器,就看在等号的哪一侧。而设置器和获取器的调用格式是[self setSomeProtery]和[self someProperty]。点语法和设置获取器的使用方式是不一样的,而且设置器还多一个set前缀。
有人说:
今天试了一下,比如我定义一个 IBOutlet NSTextField* abc;
为什么不能 abc.setStringValue或者abc->setStringValue(我不太确定obj-c有没有“->“操作符,初学不懂哈),
而只能用[abc setStringValue:] ??
就是没有弄明白点语法和设置获取器之间的关系。