Objective c 自定义访问器和=&引用;在酒店里?
您能告诉我这些自定义访问器的含义吗: 为什么要在setter旁边添加此信息: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访问此属性。您正在类的公共接口中定
@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;