UIView的生命周期,我们新建了一个TestView
重写了以下方法
@implementation TestView {
NSInteger _count;
}
- (instancetype)init {
if (self = [super init]) {
_count = 0;
NSLog(@"%@", [NSString stringWithFormat:@"%@ ==> %ld",NSStringFromSelector(_cmd),_count]);
}
return self;
}
- (void)layoutSubviews {
[super layoutSubviews];
_count++;
NSLog(@"%@ ==> %ld",NSStringFromSelector(_cmd),_count);
}
- (void)didAddSubview:(UIView *)subview {
[super didAddSubview:subview];
_count++;
NSLog(@"%@ ==> %ld",NSStringFromSelector(_cmd),_count);
}
- (void)willRemoveSubview:(UIView *)subview {
[super willRemoveSubview:subview];
_count++;
NSLog(@"%@ ==> %ld",NSStringFromSelector(_cmd),_count);
}
- (void)willMoveToSuperview:(nullable UIView *)newSuperview {
[super willMoveToSuperview:newSuperview];
_count++;
NSLog(@"%@ ==> %ld",NSStringFromSelector(_cmd),_count);
}
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
_count++;
NSLog(@"%@ ==> %ld",NSStringFromSelector(_cmd),_count);
}
- (void)didMoveToSuperview {
[super didMoveToSuperview];
_count++;
NSLog(@"%@ ==> %ld,%@",NSStringFromSelector(_cmd),_count,self.superview);
}
- (void)willMoveToWindow:(nullable UIWindow *)newWindow {
[super willMoveToWindow:newWindow];
_count++;
NSLog(@"%@ ==> %ld",NSStringFromSelector(_cmd),_count);
}
- (void)didMoveToWindow {
[super didMoveToWindow];
_count++;
NSLog(@"%@ ==> %ld,%@",NSStringFromSelector(_cmd),_count,self.window);
}
- (void)removeFromSuperview {
[super removeFromSuperview];
_count++;
NSLog(@"%@ ==> %ld",NSStringFromSelector(_cmd),_count);
}
- (void)dealloc{
_count++;
NSLog(@"%@ ==> %ld",NSStringFromSelector(_cmd),_count);
}
然后将TestView添加到ViewController的View上边,然后移除,得到的如下日志
image.png
可以看到,生命周期如上