Tôi đang sử dụng một UISplitViewController
mỗi khi tôi nhấp vào một hàng trong VC chính tôi có thể thấy rằng viewDidLoad()
được chạy trong chi tiết VC.iOS: Cách kiểm tra xem UIViewControllers có đang tải không? (Swift)
Điều này có nghĩa là tôi đang tạo một phiên bản mới Chi tiết VC mỗi hàng nhấp chuột?
Nếu có, làm thế nào tôi có thể kiểm tra xem VC chi tiết có tải đúng cách không và tôi không chỉ tạo ra nhiều chi tiết VC mới hơn?
Tôi hơi lạc lõng ở đây trong Swift. Trước đây tôi có thể NSLog trong dealloc() và xem UIViewController
dỡ hàng đúng cách.
tôi ở đây Swift có một chức năng deinit nhưng điều này không bao giờ được gọi là:
deinit {
println("\(__FILE__.lastPathComponent)) : \(__FUNCTION__)")
NSNotificationCenter.defaultCenter().removeObserver(self)
}
1) Trong trường hợp tôi nên loại bỏ các quan sát viên của tôi?
2) Khi tôi tìm trong Trình gỡ lỗi gỡ lỗi trong Xcode, việc sử dụng bộ nhớ chỉ tiếp tục tăng lên và không bao giờ xuống.
Cập nhật: Chi tiết VC đang được gọi như sau:
if segue.identifier == "addEvent" {
if let controller = (segue.destinationViewController as UINavigationController).topViewController as? ManageViewController {
controller.manageEvent = nil
controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
controller.navigationItem.leftItemsSupplementBackButton = true
}
}
Tôi không làm bất cứ điều gì khác biệt so với rất nhiều ví dụ tôi đã nhìn thấy, nhưng tôi lo lắng về deinit
không được gọi
Cập nhật: Làm việc bây giờ - vấn đề là với đại biểu dừng deinit
được gọi (xem bên dưới câu trả lời)
gốc đang không làm việc của tôi là:
protocol ManageViewDelegate {
func pressedButton(sender: AnyObject)
}
class ManageView: UIView {
var delegate: ManageViewDelegate? = nil
...
}
Code mới làm việc:
protocol ManageViewDelegate: class {
func pressedButton(sender: AnyObject)
}
class ManageView: UIView {
weak var delegate: ManageViewDelegate? = nil
...
}
nếu 'deinit' không phải là được gọi, điều đó có nghĩa là bộ nhớ đang được giữ lại bởi * cái gì đó * và không được giải phóng. Bạn nên chỉnh sửa câu hỏi của mình để cho biết cách bạn đang chuyển đổi các bộ điều khiển chế độ xem chi tiết khi mỗi hàng được nhấp vào. –
Đã cập nhật và làm cách nào để bạn làm nổi bật những từ nhất định như bạn đã làm với deinit? – Richard
Bạn sẽ sớm biết cách sử dụng các khả năng "đánh dấu" của StackOverflow "" (http://stackoverflow.com/editing-help). –