คำถามติดแท็ก dealloc

1
dealloc ที่กำหนดเองและ ARC (Objective-C)
ในแอพ iPad เล็ก ๆ ของฉันฉันมีฟังก์ชั่น "เปลี่ยนภาษา" ที่ใช้ผู้สังเกตการณ์ viewDidLoad:ทุกควบคุมดูลงทะเบียนตัวเองกับผู้สังเกตการณ์ของฉันในช่วงของ - (void)viewDidLoad { [super viewDidLoad]; [observer registerObject:self]; } เมื่อผู้ใช้กดปุ่ม "เปลี่ยนภาษา" ภาษาใหม่จะถูกเก็บไว้ในรูปแบบของฉันและผู้สังเกตการณ์จะได้รับแจ้งและเรียกupdateUi:ตัวเลือกบนวัตถุที่ลงทะเบียน สิ่งนี้ทำงานได้ดีมากยกเว้นเมื่อฉันมีตัวควบคุมมุมมองใน TabBarController นี่คือเนื่องจากเมื่อแถบแท็บโหลดมันดึงไอคอนแท็บจากตัวควบคุมลูกโดยไม่ต้องเริ่มต้นมุมมองดังนั้นจึงviewDidLoad:ไม่ถูกเรียกดังนั้นตัวควบคุมมุมมองเหล่านั้นไม่ได้รับการแจ้งเตือนการเปลี่ยนแปลงภาษา ด้วยเหตุนี้ฉันจึงย้ายการregisterObject:โทรไปยังinitวิธีการ ย้อนกลับไปเมื่อฉันเคยviewDidLoad:ลงทะเบียนกับผู้สังเกตการณ์ฉันเคยviewDidUnload:ยกเลิกการลงทะเบียน ตั้งแต่ตอนนี้ผมลงทะเบียนในก็จะทำให้ความรู้สึกมากที่จะถอนการลงทะเบียนในinitdealloc แต่นี่คือปัญหาของฉัน เมื่อฉันเขียน: - (void) dealloc { [observer unregisterObject:self]; [super dealloc]; } ฉันได้รับข้อผิดพลาดนี้: ARC ห้ามส่งข้อความที่ชัดเจนถึง 'dealloc' เนื่องจากฉันต้องโทรหา[super dealloc]เพื่อให้แน่ใจว่าซูเปอร์คลาสนั้นสะอาดอย่างถูกต้อง แต่ ARC ห้ามไม่ให้ฉันติดอยู่ตอนนี้ มีวิธีอื่นที่จะได้รับแจ้งเมื่อวัตถุของฉันใกล้จะตายหรือไม่

5
dealloc ใน Swift
ฉันต้องการดำเนินการล้างข้อมูลเมื่อสิ้นสุดอายุการใช้งานของวิวคอนโทรลเลอร์คือลบการNSNotificationCenterแจ้งเตือน การใช้deallocผลลัพธ์ในข้อผิดพลาดของคอมไพเลอร์ Swift: Cannot override 'dealloc' which has been marked unavailable อะไรคือวิธีที่ดีที่สุดในการทำความสะอาดบางอย่างเมื่อสิ้นสุดชีวิตของวัตถุใน Swift
145 swift  dealloc 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.