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 属性名:使用大写字符作为属性名的第一个字符的主要内容,如果未能解决你的问题,请参考以下文章

如何在Objective-C中生成随机大写字符

js对象属性名驼峰式转下划线

mysql 为啥有些字段首字母是大写的在插入时会变成小写?

java中哪些首字母需要大写

15Linux 文件基本属性chgrp,chown,chmod

Objective-C中的KVC