Tôi đã đính kèm UIGestureRecognizer vào UIView. Trách nhiệm của ai là phát hành điều này trong quá trình dealloc?Tôi có chịu trách nhiệm phát hành cử chỉ của UIViewRecognizers trong dealloc không?
Cụ thể:
UITapGestureRecognizer *t =
[[UITapGestureRecognizer alloc] initWithTarget:self.view action:@selector(tapHandler:)];
[self.view addGestureRecognizer:t];
[t release];
Vì vậy, self.view hiện có giữ lại duy nhất của gestureRecognizer.
Cập nhật Tôi nên rõ ràng hơn. Câu hỏi của tôi phải làm với phương thức viewsloc. Lớp cha của view có xử lý việc phát hành gestureRecognizer khi khung nhìn được phát hành hay không. Tôi hiện đang cho rằng đó là trường hợp.
Không phải là thói quen tốt để gọi tự động phát trên tất cả các đối tượng thay vì tự giải phóng chúng. – Tieme
@Tieme I không đồng ý. Nó giữ tất cả các mã quản lý bộ nhớ ở một nơi giúp cải thiện khả năng đọc và do đó làm giảm khả năng rò rỉ do quên 'giải phóng'. Việc phát hành chậm sẽ không ảnh hưởng đến dấu hiệu nước cao bộ nhớ bởi vì đối tượng sẽ vẫn tồn tại sau khi thoát khỏi phương pháp này. Lý do của bạn cho biết rằng sử dụng autorelease là một thói quen không tốt? –
Tôi đồng ý với bạn về ví dụ này. Ở đây tốt để gọi autorelease. Nhưng nó vẫn không phải là một thói quen tốt để luôn luôn autoreleasing các đối tượng của bạn gây ra cuối cùng nó sẽ thêm một số chi phí để quản lý bộ nhớ của bạn. – Tieme