1. @synthesize
*用在@implementation中
*用来自动生成setter和getter方法的实现
*用@synthesize age = _age;就可以代替
- (int)age
{
return _age;
}
- (void)setAge:(int)age
{
_age = age;
}
2. @synthesize的细节
1> @synthesize age = _age;
*setter和getter实现中会访问成员变量_age
*如果如果成员变量不存在,就会自动生成一个@private的成员变量_age
2> @synthesize age;
*setter和getter方法中会访问变量age
*如果成员变量age不存在,就会子自动生成一个@private的成员变量age
3> 手动实现
*若手动实现了setter方法,编译器就会自动生成getter方法
*若手动实现了getter方法,编译器就会自动生成setter方法
*若同时实现setter和getter方法,编译器就不会自动生成不存在的成员变量了
3. @property新特性
1>自从XCode4之后,@property就独揽了@synthesize的功能,也就是说@property可以同时生成setter和getter的声明和实现
2>默认情况下,setter和getter方法中的实现,会去访问下划线_开头的成员变量
4. 构造方法
1>init方法的重写
- (instancetype)init
{
if([self = [super init]){
_age = 10;
}
return self;
}
2>自定义构造方法
- (instancetype)initWithName:(NSString *)name
{
if([self = [super init]){
_name = name;
}
return self;
}
5. SEL
表示方法的存储位置,每个类的方法列表都存储在类对象中,每个方法都有一个与之对应的sel类型的对象,根绝一个
SEL对象就可以找到方法的地址,进而调用方法。
1> 创建SEL对象
SEL s = @selector(test);
SEL s2 = NSSelectorFromString(@"test");
2> SEL对象的其它用法
// 将SEL对象转为NSString对象
NSString *str = NSStringFromSelector(@selector(test));
// 调用对象p的test方法
Person *p = [Person new];
[p perfromSelector:@selector(test)];
OC基础
最新推荐文章于 2021-12-02 12:02:04 发布