【问题标题】:objective-c property name: use uppercase character as first character of property nameObjective-c 属性名:使用大写字符作为属性名的第一个字符
【发布时间】:2016-10-23 06:03:42
【问题描述】:

看来Objective-c中的属性名必须以小写字母开头,因为setter是驼峰写的。

是否有任何方法可以定义以大写字符开头的属性(具有 setter 方法)?

【问题讨论】:

  • 无论如何,编程约定都是以小写开头的变量和方法名称,以大写开头的类型和类。我会坚持这个约定,因为它使您的代码更具可读性。
  • 你显然没有费心去尝试。它按预期工作。

标签: ios objective-c cocoa syntax


【解决方案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
    猜你喜欢
    • 2011-01-13
    • 1970-01-01
    • 2017-09-17
    • 2011-08-26
    • 1970-01-01
    • 2018-08-19
    • 2014-03-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多