- 验证对象是否是,创建后就立马销毁!
-
NSObject
类,里面有个- (void)dealloc
方法.类销毁前都会调用此方法. - 举例
-- 在想要测试是否销毁的类里面,实现dealloc方法 -- 只要打印此方法,就表明此类销毁了. -(void)dealloc{ NSLog(@"销毁..."); }
-- 有没有可能,是跳出括弧后,销毁的呢? - (void)viewDidLoad { ... scrollView.delegate = [[DelegateClassTest alloc]init]; NSLog(@"delegateTest...."); }
打印结果是: 先打印"销毁...",后打印"delegateTest....",所以不是跳出括弧后,再销毁.(也就是说,DelegateClassTest
类是创建后立刻销毁了)
-
为什么会创建即刻销毁呢?
delegate
是weak
,OC语法: 当一个对象创建出来,没有强指针(strong)引用,那么立马销毁! -
怎么让对象不立刻销毁呢?
用一个强指针,指向不想让其消失的对象,就可以了.
先打印"delegateTest...."后打印,"销毁...",所以是跳出括弧后,再销毁类.- (void)viewDidLoad { ... DelegateClassTest *delegateTest = [[DelegateClassTest alloc]init]; scrollView.delegate = delegateTest; NSLog(@"delegateTest...."); }
只打印delegateTemp....,说明创建的对象,没有销毁!#import "DelegateClassTest.h" @interface ViewController () -- 用 strong (强指针) 修饰 @property(nonatomic,strong)DelegateClassTest *delegateTest; @end - (void)viewDidLoad { .... self.delegateTest = [[DelegateClassTest alloc]init]; scrollView.delegate = self.delegateTest; NSLog(@"delegateTest...."); }