我已经宣布了财产:
@property (weak, nonatomic) IBOutlet UILabel *statusLabel;
然后我像这样使用它: statusLabel.text = plainText; 或 [statusLabel setText plainText];
在这两种情况下,我都会收到编译器错误“使用未声明的标识符'statusLabel';你的意思是_statusLabel吗?”。实际上,当我用_statusLabel替换statusLabel时,编译器很高兴。
我完全不解。1.是的,XCode会自动合成_statusLabel,但是我尝试使用属性,而不是实例变量。为什么属性不可见?
据我了解,将 .(dot) 与 ivar 一起使用是错误的,点用于属性。为什么又来了?
如果我手动指定合成不带下划线的 var,则代码可以工作,但同样,这意味着编译器使用变量而不是属性。
所以,这个组合有效:@synthesize statusLabel = statusLabel; ... [statusLabel setText:plainText];
这不是:@synthesize statusLabel = _statusLabel; ... [statusLabel setText:plainText];
有人解释一下吗?非常感谢。哔叽