iOS Objective-C为什么属性(property)同时重写setter、getter方法会报错?

当在Objective-C中尝试同时自定义setter和getter方法时,可能会遇到编译错误,提示未声明标识符。这是因为忘记使用@synthesize来指定ivar。正确做法是使用@synthesize声明ivar,如@synthesize developername = _developername;。这样,属性developername与实例变量_developername关联。通过self.developername访问时会调用自定义的存取方法,而直接使用_developername则是简单赋值,不涉及setter和getter。
摘要由CSDN通过智能技术生成

问题

在开发当中,遇到定义了一个属性,需要同时重构它的setter、getter方法,有的时候会报错,上代码:

@interface SetterGetterClass : NSObject
@property(nonatomic,copy)NSString *developername;
@end
这个是声明的属性,下面是实现setter、getter方法以后报错的图片:
- (void)setDevelopername:(NSString *)developername{  //MRC下的形式
	if(_developername != developername){
		[_developername release];
    	_developername = [developername copy];
    }
}

- (NSString *)developername{

    return _developername;

}

setter、getter
错误信息

没有声明的标识符的使用,意思就是_developername没有被声明,找不到该变量,那么问题来了,为什么找不到该变量,明明已经property一个成员属性了。

property具体的作用:

@property(nonatomic,copy)NSString *developername;

1.property是定义属性,不是成员变量,声明了setter、getter方法;

在新的xocde的环境下,不加@synthesize会自动生成私有的带下划线的的成员变量、该变量的setter、getter方法 也就是这个属性的变量 = _developername并可以用setter、getter外部访问ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值