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

Mic*_*ers 3 properties objective-c capitalization

resultLabel是一个UILabel.那么为什么呢

 resultLabel.Text= @"";
Run Code Online (Sandbox Code Playgroud)

不给出错误?它应该是resultLabel.text.

感谢您的任何见解.

Mar*_*n R 7

属性的默认setter函数foosetFoo:,首字母大写.因此两条线

resultLabel.text = @"";
resultLabel.Text = @"";
Run Code Online (Sandbox Code Playgroud)

生成相同的代码

[resultLabel setText:@""];
Run Code Online (Sandbox Code Playgroud)

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

NSString *x = self.text; // --> x = [self text]
NSString *x = self.Text; // --> x = [self Text]
Run Code Online (Sandbox Code Playgroud)

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

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

self.text = @"foo";
// error: synthesized properties 'text' and 'Text' both claim setter 'setText:'
Run Code Online (Sandbox Code Playgroud)