8

Tôi có hai UIViewControllers với các nút kích hoạt segue (phương thức) với nhau. Tôi muốn khám phá nếu đó là gây ra bất kỳ rò rỉ bộ nhớ trong khi nhảy qua lại và tôi thấy rằng Living Object & & cấp phát bộ nhớ đang tăng lên, những gì cuối cùng sẽ để lại sụp đổ ứng dụng. Tôi không có bất kỳ dòng mã duy nhất - làm việc với UIViewControllers tinh khiết. storyboardPhân đoạn bảng phân cảnh gây ra rò rỉ bộ nhớ

profiler 1

profiler 2 project's settings

Những gì tôi có thể làm sai?
Tôi có thể đặt sai điều gì trong cài đặt dự án không?
Tôi có đọc được số liệu thống kê của profiler không?
Tôi có cần thực hiện bất kỳ lệnh phát hành đặc biệt nào khi làm việc với các phân đoạn không?

Trả lời

13

Bạn hiện không sử dụng phân đoạn phương thức một cách chính xác. Cách bạn đã thực hiện nó, bạn đang tạo ra một thể hiện mới của mỗi bộ điều khiển xem khi bạn segue thay vì trở về ví dụ bạn đến từ. Đó là lý do tại sao mức sử dụng bộ nhớ của bạn tiếp tục tăng.

Trước khi iOS 6, cách chính xác để xử lý này là:

1) xác định một phương pháp như viewController2Done theo quan điểm điều khiển 1
2) theo quan điểm điều khiển 2, tạo ra một tài sản được gọi delegate loại id .
3) trong prepareToSegue để xem điều khiển 1, thiết lập delegate theo quan điểm điều khiển 2-self
4) theo quan điểm điều khiển 2, khi đó là thời gian để quay trở lại xem điều khiển 1, gọi [delegate viewController2Done]
5) trong viewController2Done gọi [self dismissModalViewControllerAnimated:YES]

Phương pháp này vẫn hoạt động trong iOS 6, nhưng cũng có thể sử dụng unwind segue mới thay thế. Để sử dụng nó, bạn sẽ xác định một phương pháp trong điều khiển điểm của bạn 1 như sau:

Objective-C:

- (IBAction)unwindFromViewController2:(UIStoryboardSegue *)segue 
{ 
    NSLog(@"and we are back"); 
} 

Swift:

@IBAction func unwindFromViewController2(segue: UIStoryboardSegue) { 
    print("and we are back") 
} 

Sau đó, bạn muốn kiểm soát kéo từ nút trong bộ điều khiển xem 2 vào biểu tượng thoát màu cam trong thanh phía trên trình điều khiển chế độ xem trong Bảng phân cảnh. Trong cửa sổ bật lên, bạn sẽ chọn unwindFromViewController2 và thì đấy, bạn đã hoàn tất.

enter image description here

+0

OMG, tôi thật ngớ ngẩn. Cảm ơn bạn! – Piotr