[英]iPhone - a question about @property
我是Objective-C的新手,我在看一段代码,试图理解一些东西,然后遇到了这个.h文件:
@interface部分上有这样的声明
MyVideoClass *contrast_;
然后在下面
@property (nonatomic, retain) MyVideoClass *contrast;
@property (nonatomic, retain) FetchClass *fetchMe;
奇怪的是,第一个在名称后有一个下划线,而第二个则没有。
另一个奇怪的事情是,该人调用了这些属性,如下所示:
FetchClass *fetchOne = [self.fetchMe contrast];
那叫什么电话 对我来说这似乎很疯狂。 我根本不明白这里发生了什么,但是代码有效。 太疯狂了。
你们能给我解释一下吗? 原谅这个愚蠢的问题,但我仍在学习...
谢谢
检查执行文件的顶部; 您应该看到一行显示
@synthesize contrast = contrast_;
这样做的原因是要确保您通过属性的设置器和获取器(使用@synthesize
创建)而不是直接访问属性。
在第二段代码中, self.fetchMe
使用其设置程序fetchMe_
属性。 如果这个家伙忘了使用self.
并简单地写
FetchClass *fetchOne = [fetchMe contrast];
他会得到一个错误,因为fetchMe
不存在(但fetchMe_
确实存在)。 与所有事物一样,是否使用保护取决于您。
这个:
FetchClass *fetchOne = [self.fetchMe contrast];
完全等同于以下任何一个:
FetchClass *fetchOne = self.fetchMe.contrast;
FetchClass *fetchOne = [[self fetchMe] contrast];
也就是说, .
等效于方法调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.