首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自我包含自我属性

自我包含自我属性
EN

Stack Overflow用户
提问于 2014-03-29 19:44:23
回答 2查看 80关注 0票数 0

我在玩目标C时偶然发现了一些奇怪的东西。下面的代码按我希望的方式编译和工作。

代码语言:javascript
复制
self.scrollView.delegate = self.self.self.self.self;
// equivalent to         = self;

这为什么要编译呢?self是对象的属性吗?如果是这样的话,我从未见过self被声明为一个属性。我认为self引用了您正在创建的类的实例。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-29 20:29:09

让我转过来,为什么它不能像预期的那样编译或工作呢?

selfNSObject的一个属性。它总是指向对象本身。从NSObject继承的每个对象都有它。

正如您所说,self指的是实例。嗯,它不仅在创建实例的上下文中有效。它总是在那里。这是非常有用的。

[self myProperty]self.myProperty直接引用属性myProperty的getter (或setter),而在方法中键入myProperty直接引用属性,而不传递getter。

另一个例子是someOjbect.delegate = self;左右。

因此,当self始终引用一个对象时,它具有一个self属性,该属性引用的正是具有self属性的对象……

顺便说一句,类是objects中继承自Class的对象。在类的上下文中,即在类方法中,它指的是这个类的类对象。你可以在那里玩同样的游戏。如果您从实例开始,那么您可以使用类属性来玩游戏。

代码语言:javascript
复制
self.class.class.class == [self class].self.class.self

应该评估为是的。(嗯,我自己从来没试过。如果你真的尝试了,发现这是错误的,请告诉我)

票数 1
EN

Stack Overflow用户

发布于 2014-03-29 20:10:07

self 中的一种方法。它返回被调用的对象,它是毫无意义的。

这与局部变量self不同,后者在方法中引用方法被调用的对象。

方法和局部变量都适用于类对象和标准实例,因此类方法有一个self局部变量,一个类对象是self方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22735983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档