繁体   English   中英

iPhone-有关@property的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM