今天又遇到了一個(gè)奇怪的問題,代碼如下:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.delegate = self;
[self presentViewController:imagePicker animated:YES completion:nil];
用法很對,沒毛病,可就是不調(diào)用
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
分析原因
- UIImagePickerController實(shí)例對象被釋放了 //這不可能,如果iOS系統(tǒng)沒瘋那肯定是我瘋了
- UIImagePickerControllerd的delegate被釋放了 //但是delegate是當(dāng)前視圖控制器肯定也沒有釋放
- delegate被改了 //看了看代碼沒有改動(dòng)的地方啊
???
詭異的事件
。。。
后來我用kvo監(jiān)測了一下delegate,發(fā)現(xiàn)果然被改了,改成了 _JZNavigationDelegating ...
真相大白
原來是我在pod里加入了一個(gè)幫助處理NavigationBar顏色的第三方庫,這個(gè)庫對UINavigationController做了一些處理,如下圖

image.png
而我們今天的主角 UIImagePickerController恰恰就是UINavigationController的子類