在Objective-C描述方法中不能有描述名称的ivar吗?

Shi*_*iun 1 objective-c

我正在尝试为我的NSObject派生对象实现Objective-C描述方法.

但是,我的派生对象有一个名称描述的ivar.由于某种原因,这导致了崩溃.

- (NSString *) description {

    NSMutableString *output = [NSMutableString string];
    [output appendFormat:@"MyObject.description = %@\n", self.description];

    return output;
}
Run Code Online (Sandbox Code Playgroud)

为什么这会成为问题?

e.J*_*mes 5

简答:崩溃是堆栈溢出的结果,因为您的-description方法会反复调用自身.做你想做的事情(从描述方法中访问伊娃)是什么,你应该使用前缀self.在伊娃面前.

更多详情:

在Objective-C中,self.description是简写[self description].使用dot-syntax通知编译器您要访问名为的属性description,而不是 ivar本身.