[問題] weak 屬性release時機
最近做了一些嘗試
遇到一個問題
我在ViewController中有兩個property為
@property (weak, nonatomic) UKTextField *myTextField;
@property (weak, nonatomic) Person *person;
UKTextField為繼承UITextField的類別
Person為自己定義的類別
兩個類別我都有覆寫dealloc的方法
讓兩個物件被回收時可以顯示Log
測試如下
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"viewDidLoad Start");
//Assigning retained object to weak variable;
//object will be released after assignment
myTextField = [[UKTextField alloc] init];
//Assigning retained object to weak variable;
//object will be released after assignment
person = [Person new];
}
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSLog(@"viewWillAppear Start");
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSLog(@"viewDidAppear Start");
}
Log內容出現順序如下
1.viewDidLoad Start
2.Person Dealloc
3.viewWillAppear Start
4.UKTextField dealloc
5.viewDidAppear Start
問題:
將UKTextField與Person皆設定為weak
就ARC來說當weak的物件應該再被指派完之後應該在viewDidLoad就會被回收了
但為什麼UKTextField會在viewWillAppear才會被回收呢??
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.77.201.168
※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1507023491.A.B0A.html
※ 編輯: huangcooly (42.77.201.168), 10/03/2017 17:44:59
推
10/03 19:06,
7年前
, 1F
10/03 19:06, 1F
→
10/03 19:06,
7年前
, 2F
10/03 19:06, 2F
→
10/03 19:55,
7年前
, 3F
10/03 19:55, 3F
→
10/03 19:56,
7年前
, 4F
10/03 19:56, 4F
→
10/03 19:58,
7年前
, 5F
10/03 19:58, 5F
→
10/03 19:59,
7年前
, 6F
10/03 19:59, 6F
→
10/03 20:01,
7年前
, 7F
10/03 20:01, 7F
→
10/03 20:07,
7年前
, 8F
10/03 20:07, 8F
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章