看板 MacDev 關於我們 聯絡資訊
※ 引述《zonble (zonble)》之銘言: : ※ 引述《valda (valda)》之銘言: : : 請問如何在navigation bar 上加上一個textfield : : 感謝 : : 試了很多次都不太行 : UITextField *aTextField = [[UITextField alloc] initWithFrame:CGRectMake(0.0, 0.0, 200.0, 40.0)]; : aTextField.borderStyle = UITextBorderStyleRoundedRect; : aTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; : aTextField.placeholder = @"Type something here"; : self.textField = [aTextField autorelease]; : self.navigationItem.titleView = self.textField; 想借用此文章問一下zonble前輩一個小問題,是關於autorelease的。 以上例來說,如果第一行寫的是 UITextField *aTextField = [[[UITextField alloc] initWithFrame...] autorelease]; 第五跟第六行寫的是 self.textField = aTextField; self.navigationItem.titleView = aTextField; (或 _textField) 這兩種寫法的差距有高下之分嗎? 因為我自己是都使用第二種寫法,很想知道只靠這招是否有問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.99.52
zonble:沒什麼差別 :p 02/23 01:26
markzog21:我覺得會不會有可能還沒執行到第5第6行就先release掉了? 02/23 20:02
uranusjr:不可能, autorelease 是在事件迴圈的最後做的, 不會方法 02/23 21:19
uranusjr:跑到一半突然發作... 02/23 21:19
zonble:這整段 code 都還沒有離開 runloop 02/23 22:36
markzog21:怎麼判斷程式是否還在runloop裡面?之前有寫過從A view 02/24 15:58
markzog21:進到B view的時候就出現了release掉元件的BUG。最後解決 02/24 15:59
markzog21:是把很多變數都做retain,記憶體管理那部份就很糟。 02/24 15:59