我是Objective-C的新手,我正在查看代码,尝试理解一些事情,并且我遇到了这个.h文件:
在@interface部分有一个类似的声明
MyVideoClass *contrast_;
然后我们有
@property (nonatomic, retain) MyVideoClass *contrast;
@property (nonatomic, retain) FetchClass *fetchMe;
奇怪的是,第一个在名字后面有一个下面的内容,第二个有下面的内容,没有。
另一件奇怪的事情就是这个人打电话给这些属性:
FetchClass *fetchOne = [self.fetchMe contrast];
那是什么样的电话?这对我来说似乎很疯狂。我根本无法理解这里发生了什么,但代码有效。非常疯狂。
你们可以解释一下吗?原谅这个愚蠢的问题,但我还在学习......感谢
答案 0 :(得分:2)
检查实施文件的顶部;你应该看到一行
@synthesize contrast = contrast_;
这样做的原因是确保您通过其setter和getter(使用@synthesize
创建)访问属性,而不是直接访问。
在第二段代码中,self.fetchMe
使用其setter获取fetchMe_
属性。如果这个人忘记使用self.
并简单地写了
FetchClass *fetchOne = [fetchMe contrast];
他会收到错误,因为fetchMe
不存在(但fetchMe_
确实存在)。与所有事情一样,由您决定是否使用保护。
答案 1 :(得分:1)
此:
FetchClass *fetchOne = [self.fetchMe contrast];
完全等同于以下任何一项:
FetchClass *fetchOne = self.fetchMe.contrast;
FetchClass *fetchOne = [[self fetchMe] contrast];
也就是说,.
等同于方法调用。