为什么大写的属性名称没有在Objective-C / UITouch中出错?

时间:2013-03-14 13:38:21

标签: objective-c properties capitalization

resultLabelUILabel。那么为什么呢?

 resultLabel.Text= @"";

没有出错?它应该是resultLabel.text

感谢您的任何见解。

1 个答案:

答案 0 :(得分:7)

属性foo的默认setter函数为setFoo:,首字母大写。因此两行

resultLabel.text = @"";
resultLabel.Text = @"";

生成相同的代码

[resultLabel setText:@""];

这仅适用于setter函数,而不适用于getter:

NSString *x = self.text; // --> x = [self text]
NSString *x = self.Text; // --> x = [self Text]

因此,您不能拥有两个只在第一个字母的情况下不同的读写属性,这将生成编译器错误:

@property (nonatomic, strong) NSString *text;
@property (nonatomic, strong) NSString *Text;

self.text = @"foo";
// error: synthesized properties 'text' and 'Text' both claim setter 'setText:'