Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c setter和getter的方法名称约定_Objective C_Cocoa_Naming Conventions - Fatal编程技术网

Objective c setter和getter的方法名称约定

Objective c setter和getter的方法名称约定,objective-c,cocoa,naming-conventions,Objective C,Cocoa,Naming Conventions,我希望我的所有实例变量在公共方法中都是私有的和访问器/变异器。我想知道在构建大型类时是否有一种命名约定,一种是为了其他开发人员的可读性,另一种是防止方法名与其他类冲突的约定 例如,如果我想让一个类访问并更改名为“支持音乐家”的“质量”(不一定是特定变量),[myInstance setSupportsMusicians:YES]和[myInstance returnSupportsMusicians]是否可以接受,使用set和return作为所有其他变体和访问器的方法名称前缀 显然,我知道我可以

我希望我的所有实例变量在公共方法中都是私有的和访问器/变异器。我想知道在构建大型类时是否有一种命名约定,一种是为了其他开发人员的可读性,另一种是防止方法名与其他类冲突的约定

例如,如果我想让一个类访问并更改名为“支持音乐家”的“质量”(不一定是特定变量),
[myInstance setSupportsMusicians:YES]
[myInstance returnSupportsMusicians]
是否可以接受,使用
set
return
作为所有其他变体和访问器的方法名称前缀


显然,我知道我可以给它们取任何我想要的名字,但我想得到一些意见,因为我知道命名约定是有组织开发的重要组成部分。

set和get是Java&很少有其他语言风格

但cocoa风格是(名称为伪代码):

cocoa中的setName()是setName:

cocoa中的getName()是名称:

编辑:这仅用于命名约定,不要将其作为方法的语法

一些有用的链接:


您最好使用
@property
来声明这样的内容。通过这种方式,您可以获得其所有实现好处(如原子性、自动生成ivar等)以及方便的点语法(例如,
myInstance.supportsMusicians=YES
),而无需担心底层方法名称

但是,如果您确实想手动声明方法,或者只是想知道自动生成的方法是什么,那么命名约定是:

- (void)setSupportsMusicians:(BOOL)supportsMusicians;
- (BOOL)supportsMusicians;
对于某些类型的布尔属性也有一个附带的例子,其中“is”用作可读性的前缀,例如

- (BOOL)isVisible;
然而,这并没有得到普遍遵守,可能被视为一项遗留公约


请注意,“get”作为前缀不应随意使用,因为它有一个特定的含义:它用于调用方提供要填充的缓冲区的上下文中,例如
-[NSString getBytes:length://code>

我不确定这是正确的“cocoa风格”,因为括号表明您谈论的是函数,而不是方法。我指的是Objective-C中的对象方法,而不是C风格的函数约定。您可能只想使用@propty和@synthesis(仅在必要时重写),而不是自己编写所有setter/getter。然后,您将能够使用
myInstance.supportsMusicians
符号来读/写变量(它仍然在幕后使用getter/setter)。对于getter/setter@property就足够了,新的xcode会创建一个隐藏的变量。对于使用相同样式的所有其他私有或公共方法,不能使用“get”或“return”。@Kitsune对于完全封装,您可以在头文件(在实现中)之外使用
private
form
@property
,以仍然获得使用属性进行内存管理的好处,但是仍然只对setter/getter使用公共方法。好的链接。根据文件,看起来“get”实际上并没有被建议。