为什么我不能在Obj-C中声明一个变量名为"newVariable"的变量?
在Objective-C中,声明一个属性会生成两个访问器方法(getter/setter):
-(NSString*)newString; -(void)setNewString:(NSString*)newString;
Objective-C编译器会强制执行一种内存管理的命名规范。以new
(还有"alloc"、"copy"、"mutableCopy")开头的方法要求返回一个由调用者"拥有"的对象。可以参考文档。然而,生成的访问器方法并不遵循这个规则。
这就是为什么无法像"newVariable"这样声明一个变量的原因。编译器会将这个声明解析为生成一个名为newVariable
的访问器方法,但这个方法并不符合命名规范。
解决这个问题的方法是遵循命名规范,不要使用以"new"开头的名称来声明变量。如果确实需要使用这样的名称,可以考虑使用其他命名方式来避免冲突,比如在变量前面加上下划线或其他前缀。例如,可以声明一个名为_newVariable
的变量。这样做可以避免与访问器方法冲突,同时也符合Objective-C的命名规范。