为什么可以要求指向无对象的指针执行setter?

时间:2016-03-10 06:29:56

标签: objective-c setter

我创建一个指针不会创建一个Class对象。 但它可以是send方法在另一个实例方法中执行。 我想只需要指向该对象的指针就可以执行一个方法。

为什么" t"可以像这个图像一样在方法中使用setter吗? enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

这是因为Xcode仅检查声明的t变量类型是否具有名为a的可见读写属性。如果此t实际上是对象或其他东西,它并不在乎。例如,它无法知道t是对象还是零,或者这种情况下的其他任何内容

- (void) method:(One*) t{
     t.a = @"Some string";
}

你可以这样称呼它

[two method:nil];

Xcode不会抱怨。你甚至可以这样做

One *t = (One *)[[NSObject alloc] init];   //warning here
t.a = @"Some t";                           //Xcode doesn't care, that t is actually NSObject and doesn't respond to setA:; But you get a runtime error
ObjC中的

nil响应所有选择器 - 您可以在nil对象上调用任何可见方法,但您不会收到警告或错误。只是默默地经过