Tôi đã sử dụng các công cụ để tìm phân bổ không được phát hành đúng cách. Tôi có MKMapViewDelegate thêm một bản đồ thông qua một phương thức thể hiện sau khi nó đã được khởi tạo. Tôi có thể thấy trong cây gọi rằng phương pháp này giữ lại khoảng 300KB bộ nhớ, sau khi ViewDelegate được phát hành. Tôi nhận xét ra thịt của mã và nó ảnh tĩnh duy trì bộ nhớ chỉ với dòng này:MKMapView initWithFrame không giải phóng bộ nhớ với ARC
self.map = [[MKMapView alloc] initWithFrame:CGRectMake(10, 210, 300, 125)];
tôi nhìn trong danh sách đối tượng và MKMapView bản thân không phải là sống, nhưng như tôi tiếp tục tạo ViewDelegates mới, mà bộ nhớ tiếp tục tăng lên. Sau đây là cách bản đồ được định nghĩa:
@property (strong, nonatomic) MKMapView *map;
đại biểu của bản đồ được thiết lập để nil, cũng như tài liệu tham khảo trên của ViewDelegate dealloc
self.map.delegate = nil;
self.map = nil;
Cách sử dụng bản phát hành thay vì số không. Bạn có thể kiểm tra xem bạn có kết thúc không? –
@ S.P. họ đang sử dụng ARC, không có bản phát hành. –
@ S.P. không ai khác nói đến tài sản đó, đúng không? Không có gì khác có khả năng giữ một tài liệu tham khảo? –