iOS中@Property声明的属性同时重写getter和setter方法报错问题
来源:互联网 发布:华为网络盒子支持4k吗 编辑:程序博客网 时间:2024/06/11 00:27
在.h或者.m文件中用@property声明一个属性时。如果同时重写getter和setter方法,会报“该变量没有定义的错误”。如:
ViewController.h
#import <UIKit/UIKit.h>@interface ViewController : UIViewController@property (nonatomic, assign) NSInteger num;@end
ViewController.m
-(NSInteger)num{ return _num;}- (void)setNum:(NSInteger)num{ _num = num;}
解决办法:.m文件中需要加上:
@synthesize propertyName = _propertyName;
原因:因为@property默认给该属性生成getter和setter方法,当getter和setter方法同时被重写时,则系统就不会自动生成getter和setter方法了,也不会自动帮你生成_num变量,所以不会识别。
小知识:声明的property如果没有特意指定synthesize的话,那么Objective-C就会自动的给你声明一个_开头的实例变量。
_xxx访问的是xxx的地址。self.xxx访问的是xxx的getter。这两者并不是完全等价的,self.xxx是用objc_msgSend发消息,_xxx或者self->xxx则是直接访问内存地址,一般建议在init里面用_xxx,其他地方用self.xxx.
1 0
- iOS中@Property声明的属性同时重写getter和setter方法报错问题
- ios 同时重写setter和getter方法
- iOS积累-为什么使用属性之后, 同时重写setter,getter方法会报错
- 同时重写属性的getter/setter方法和readonly的使用
- property生成属性的时候,同时重写setter与getter方法,那么实例变量不自动生成
- Objective-C,ios,属性声明(property declarations), 自定义属性,自动生成 get 和 set 方法,getter 和 setter
- property属性的setter、getter方法
- JavaScript对象中属性的getter和setter方法
- JavaScript对象中属性的getter和setter方法
- scala属性的getter和setter方法
- ios基础之属性set get方法同时重写报错的问题
- ios中setter和getter的写法
- 关于重写getter的方法和setter方法
- IOS-getter和setter方法
- iOS setter和getter方法
- C语言 @property和@synthesize搭配使用声明和实现getter和setter方法
- OC 语言- 同时重写setter方法或者getter方法会报错
- vue中计算属性computed的getter setter问题
- ArcGIS Engine中 IGeometry和Json字符串的相互转换
- redis采用序列化方案存对象
- Proteus入门教程
- Android跳转到微信公众号
- openSUSE下安装LAMP
- iOS中@Property声明的属性同时重写getter和setter方法报错问题
- iOS plist文件操作
- c#导出Excel文件,转换为可读模式
- Clang Language Extensions
- buntu虚拟机的共享文件夹
- 感悟爱情婚姻
- Fresco动态加载圆角(java代码实现)
- 发布环境下关闭NSLog
- Node.js初体验