UIView的生命周期,我們新建了一個(gè)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上邊晴裹,然后移除祭示,得到的如下日志
可以看到偷崩,生命周期如上