Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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 自定义访问器和=&引用;在酒店里?_Objective C_Accessor - Fatal编程技术网

Objective c 自定义访问器和=&引用;在酒店里?

Objective c 自定义访问器和=&引用;在酒店里?,objective-c,accessor,Objective C,Accessor,您能告诉我这些自定义访问器的含义吗: 为什么要在setter旁边添加此信息: @property (assign,getter=isSelected) BOOL selected; 关于二传手 @property (copy,setter=setDefaultTitle:) NSString* title; 这与编写@synthesis title=defaultTitle相同吗 谢谢 在头文件中,指定希望其他类能够使用myObject.isSelected访问此属性。您正在类的公共接口中定

您能告诉我这些自定义访问器的含义吗:

为什么要在setter旁边添加此信息:

@property (assign,getter=isSelected) BOOL selected;
关于二传手

@property (copy,setter=setDefaultTitle:) NSString* title;
这与编写@synthesis title=defaultTitle相同吗

谢谢

在头文件中,指定希望其他类能够使用
myObject.isSelected
访问此属性。您正在类的公共接口中定义此名称


@synthesize title = defaultTitle;
在实现文件中,指定已定义名为
title
的属性供其他类使用,但在类内部,您希望实际使用名称
defaultTitle
。这通常是在您声明了自己的名为
defaultTitle
的私有实例变量时完成的,您不希望人们直接修改该变量。

@property(assign,getter=isSelected)BOOL selected

必须指定getter以符合命名约定。参见苹果的手册引用:

通常,您应该指定作为键值的访问器方法名称 符合编码要求(请参阅键值编码编程指南)-常见 使用getter装饰器的原因是为了遵守 布尔值的isPropertyName约定

@property(copy,setter=setDefaultTitle:)NSString*title

如果还指定getter,则情况也会相同。但是,您必须使用
@synthesis title=defaultTitle
为getter/setter方法生成正确的方法名。

否,因为您正在单独更改setter方法。欢迎使用堆栈溢出。请仔细阅读。特别是(特别是包含链接的链接,很可能被视为垃圾邮件)。如果你想让你的名字出现在文章的底部,请在个人资料中更改你的用户名。@user929170:谢谢,这样就完全一样了,对吗?唯一的区别是,如果您使用“isSmthg”或仅“smthg”调用属性?是的。另请参见:谢谢,在您的示例中,不应该修改defaultTitle,但是我们可以执行“myClass.title=smthg”吗?将变量defaultTitle设置为私有,并将属性title设置为公共,目的是强制使用getter和setter方法,以确保在更改值时代码运行。通过这种方式,其他类可以使用该属性,但它们不能在不经过getter或setter的情况下简单地对值进行更改。
@synthesize title = defaultTitle;