Theo tôi - điều này hoạt động tương tự như cơ chế retCount. Bạn không thể chắc chắn rằng tại thời điểm hiện tại bạn có người quan sát của bạn. Ngay cả khi bạn kiểm tra: self.observationInfo - bạn không thể biết chắc chắn rằng mình sẽ có / sẽ không có người quan sát trong tương lai.
Giống như keepCount . Có lẽ observationInfo phương pháp là không chính xác rằng loại vô dụng, nhưng tôi chỉ sử dụng nó trong các mục đích gỡ lỗi.
Vì vậy, kết quả là - bạn chỉ cần làm điều đó như trong quản lý bộ nhớ. Nếu bạn đã thêm một người quan sát - chỉ cần xóa nó khi bạn không cần nó. Giống như sử dụng các phương thức viewWillAppear / viewWillDisappear, v.v. Ví dụ:
-(void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self addObserver:nil forKeyPath:@"" options:NSKeyValueObservingOptionNew context:nil];
}
-(void) viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self removeObserver:nil forKeyPath:@""];
}
Và bạn cần một số kiểm tra cụ thể - thực hiện lớp của riêng bạn xử lý một mảng các trình quan sát và sử dụng nó cho các kiểm tra của bạn.
addObserver:
trongviewWillAppear:
và tương ứngremoveObserver:
trongviewWillDisappear:
, các cuộc gọi được kết hợp một cách chính xác. Tôi phải khắc phục nhanh vì vậy tôi sẽ triển khai giải pháp thử bắt và để lại nhận xét để điều tra nguyên nhân hơn nữa.