我在玩目标C时偶然发现了一些奇怪的东西。下面的代码按我希望的方式编译和工作。
self.scrollView.delegate = self.self.self.self.self;
// equivalent to = self;这为什么要编译呢?self是对象的属性吗?如果是这样的话,我从未见过self被声明为一个属性。我认为self引用了您正在创建的类的实例。
发布于 2014-03-29 20:29:09
让我转过来,为什么它不能像预期的那样编译或工作呢?
self是NSObject的一个属性。它总是指向对象本身。从NSObject继承的每个对象都有它。
正如您所说,self指的是实例。嗯,它不仅在创建实例的上下文中有效。它总是在那里。这是非常有用的。
[self myProperty]或self.myProperty直接引用属性myProperty的getter (或setter),而在方法中键入myProperty直接引用属性,而不传递getter。
另一个例子是someOjbect.delegate = self;左右。
因此,当self始终引用一个对象时,它具有一个self属性,该属性引用的正是具有self属性的对象……
顺便说一句,类是objects中继承自Class的对象。在类的上下文中,即在类方法中,它指的是这个类的类对象。你可以在那里玩同样的游戏。如果您从实例开始,那么您可以使用类属性来玩游戏。
self.class.class.class == [self class].self.class.self应该评估为是的。(嗯,我自己从来没试过。如果你真的尝试了,发现这是错误的,请告诉我)
https://stackoverflow.com/questions/22735983
复制相似问题