Điều này nghe có vẻ là một câu hỏi mới, tuy nhiên tôi mới là người phát triển iOS.Thay đổi điều hướngController.delegate nguyên nhân truy cập kém
Tôi đã xem chế độ xem trong navigationController, giả sử đây là chế độ xem được đẩy thứ 3. Trong chế độ xem đó, tôi đặt self.navigationController.delegate = self;
. Tôi đã thay đổi đại biểu vì tôi cần xử lý trường hợp khi người dùng chuyển đến chế độ xem trước, tức là bật từ chế độ xem hiện tại.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if ([[viewController class] isEqual:[MainViewController class]]) {
...
}
}
Nó hoạt động OK, nhưng khi tôi bật chế độ xem hiện tại và nhấn lại nút điều hướng (tức là chuyển sang chế độ xem được đẩy đầu tiên), tôi gặp phải lỗi truy cập không hợp lệ.
Vì vậy, những gì tôi đang thiếu? Cách chính xác để xử lý nút điều hướng quay lại là gì?
thực sự thiết lập đại biểu để nil trong dealloc không giúp ... Trong trường hợp của tôi, quan điểm thứ 3 thực hiện UINavigationControllerDelegate sự những người khác thì không? Vì vậy, nơi nào tôi cần phải thiết lập đại biểu để tự, trong tất cả các quan điểm? – deimus
Nếu tôi đã cho bạn ủy quyền chính xác, bạn nên đặt thành 0 trong chế độ xem nếu được đặt ở chế độ tự động mỗi khi bạn đẩy hoặc bật. Ít nhất tôi đã làm như vậy và nó có vẻ làm việc ... Vui lòng xác nhận – deimus
Vâng tất nhiên nó phải được thiết lập cho mỗi bộ điều khiển xem. Xác nhận. Lý do tại sao bạn nên thiết lập đại biểu để nil, là để tránh "lủng lẳng" con trỏ (con trỏ đến bộ nhớ deallocated). EXC_BAD_ACCESS thường xảy ra khi bạn gửi một tin nhắn đến đối tượng deallocated và kể từ khi đại biểu của bộ điều khiển chuyển hướng của bạn là một đối tượng deallocated bạn đã nhận được lỗi đó. – Eugene