同时重写属性的getter/setter方法和readonly的使用
2017-07-21 10:33
585 查看
1.新建Person类
// Person.h #import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic, assign, readonly) int age; // 对外只读 @property (nonatomic, copy) NSString *name; @end
// Person.m #import "Person.h" @interface Person () { NSString *_name; // 声明实例变量第一种办法 int _age; } @end @implementation Person //@synthesize name = _name; // 声明实例变量第二种办法 // 使用property的时候,单独重写任意一个方法都不会报错,但同时重写set get方法就会报错 // 主要是因为当你重写了get和set方法之后@property默认生成的合成方法就不会起作用了, // 这也就意味着你的类不会自动生成出实例变量了,你就必须要自己声明实例变量 - (void)setName:(NSString *)name { _name = name; } - (NSString *)name { return _name; } - (void)setAge:(int)age { _age = age; } - (int)age { return _age; } @end
2.main.m
#import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { @autoreleasepool { Person *person = [[Person alloc] init]; person.name = @"Jerry"; NSLog(@"person.name = %@", person.name); // person.name = Jerry [person setName:@"Poter"]; NSLog(@"person.name = %@", person.name); // person.name = Poter NSLog(@"person.age = %d", person.age); // person.age = 0 person.age = 26; // 报错:Assignment to readonly property } return 0; }
相关文章推荐
- iOS积累-为什么使用属性之后, 同时重写setter,getter方法会报错
- iOS中@Property声明的属性同时重写getter和setter方法报错问题
- property生成属性的时候,同时重写setter与getter方法,那么实例变量不自动生成
- 重写setter与getter方法以及其使用情况
- ios 同时重写setter和getter方法
- OC 语言- 同时重写setter方法或者getter方法会报错
- 同时重写getter、setter方法,Use of undeclared identifier错误
- java中封装类Feild和使用setter和getter方法访问封装的类Feild
- 深入了解JavaBean规范中的属性名和setter/getter方法
- 使用setter方法和=号进行属性赋值的区别
- 给内置对象或自定义对象添加存取器属性(getter setter)的方法总结
- mybatis从dao传入多个参数到sqlmap时dao中要使用map或实例对象(如:user)作为参数传入, 否则报错找不到属性getter方法
- 自定义类属性设置及setter、getter方法的内部实现
- NSCopying协议的使用,setter和getter方法的作用,内存管理高级,集合的内存管理
- C语言 @property和@synthesize搭配使用声明和实现getter和setter方法
- 当把属性的语义特性分别声明为assign,retain,copy时, 自动生成setter, getter方法内部实现
- 属性声明(property declarations), 自定义属性,自动生成 get 和 set 方法,getter 和 setter
- html表单属性readonly和disabled的使用方法
- OC类的构造函数,析构函数与setter/getter属性实例方法
- Objective-C,ios,属性声明(property declarations), 自定义属性,自动生成 get 和 set 方法,getter 和 setter