Objective-c 属性名:使用大写字符作为属性名的第一个字符
Posted
技术标签:
【中文标题】Objective-c 属性名:使用大写字符作为属性名的第一个字符【英文标题】:objective-c property name: use uppercase character as first character of property name 【发布时间】:2016-10-23 06:03:42 【问题描述】:看来Objective-c中的属性名必须以小写字母开头,因为setter是驼峰写的。
是否有任何方法可以定义以大写字符开头的属性(具有 setter 方法)?
【问题讨论】:
无论如何,编程约定都是以小写开头的变量和方法名称,以大写开头的类型和类。我会坚持这个约定,因为它使您的代码更具可读性。 你显然没有费心去尝试。它按预期工作。 【参考方案1】:@import Foundation;
@interface M : NSObject
@property (nonatomic, strong) NSString *Uppercase;
@end
@implementation M
@end
int main(int argc, char **argv)
M *m = [M new];
m.Uppercase = @"I hate conventions.";
NSLog(@"%@", m.Uppercase);
return 0;
上面给出了以下输出:
➜ test ./a.out
2016-10-23 09:58:21.291 a.out[52998:1646241] I hate conventions.
从代码中可以看出,setter 和 getter 的使用方式与任何其他属性相同。
【讨论】:
【参考方案2】:首先:不要这样做。
第二:它主要是有效的。但是,如果你有一个属性“Uppercase”和一个属性“uppercase”,他们都想创建一个名为“setUppercase”的setter,那么你就有麻烦了。
【讨论】:
显然,您只需在属性声明中指定setter
名称(例如,@property (nonatomic, strong, setter=setUppercase2:) NSString *Uppercase;
)即可避免后一个问题。但是,当然,您是对的:如果有两个属性仅在第一个字母的大小写上有所不同,那将是荒谬的。最好采用Cocoa naming conventions。以上是关于Objective-c 属性名:使用大写字符作为属性名的第一个字符的主要内容,如果未能解决你的问题,请参考以下文章