一,iOS的成员变量,实例变量,属性变量区别
1,成员变量
@implementation ViewController {
UILabel *textLabel;
int count;
}
1,默认是protected
2,不会生成set、get方法
3,仅供内部使用,无需与外界接触
2,实例变量
UILabel *textLabel;
实例变量是成员变量的一种特殊情况,实例变量本质上就是成员变量,只是实例是针对的类而言的
3,属性变量
@interface MyModel : NSObject
@property (nonatomic, copy) NSString *age;
@end
1,自动生成带下划线的属性变量,以及setter和getter方法
2,不能同时重写setter和getter方法
3,如果真的想重写setter和getter方法,要么手动写成员变量,如上;
或者使用一个中间的变量:
@synthesize:
@synthesize age = myAge;
- (void)setAge:(NSString *)age {
myAge = age;
}
- (NSString *)age {
return myAge;
}
4,getter方法里边不能将属性用self修饰,否则会陷入死循环:这是因为点语法实际上是对setter和getter方法的调用,如果在getter方法中调用return self.age的话,就会循环调用。
5,重写setter方法的格式
- (void)setInfoArr:(NSArray *)infoArr {
_infoArr = infoArr;
_infoArr = @[@"我是数组"];
}
二,view的生命周期
当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序
1、 alloc 创建对象,分配空间
2、init (initWithNibName) 初始化对象,初始化数据
3、loadView 从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
4、viewDidLoad 载入完成,可以进行自定义数据以及动态创建其他控件
5、viewWillAppear 视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
6、viewDidAppear 视图已在屏幕上渲染完成
当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺序差不多和上面的相反
1、viewWillDisappear 视图将被从屏幕上移除之前执行
2、viewDidDisappear 视图已经被从屏幕上移除,用户看不到这个视图了
3、dealloc 视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放