ARCをオンにしてCocos2Dを使用してiOS6アプリを作成しています(CocosはARCの下ではなく、静的ライブラリとしてリンクされています)。次のコードを使用してカメラを提示できます。
cameraController = [[UIImagePickerController alloc] init];
// set other properties of camera
cameraController.delegate = psImageLayer;
psImageLayer.imagePicker = cameraController;
[[CCDirector sharedDirector] presentViewController:cameraController animated:YES completion:nil];
psImageLayer
そして私はこのコードでカメラを却下します:
- (void) imagePickerController: (UIImagePickerController *) picker
didFinishPickingMediaWithInfo: (NSDictionary *) info {
// do something with image
[[CCDirector sharedDirector] dismissViewControllerAnimated:YES completion:nil];
}
カメラを閉じると、アプリが次のエラーでクラッシュします。私はそれを作成しなかったので、それはiOSクラスであると*** -[PLImageScrollView release]: message sent to deallocated instance 0x2494f4f0
確信しています。PLImageScrollView
私の問題はここに投稿された問題と非常に似ているようですが、彼の解決策には、デリゲートを所有するクラスを変更することが含まれます。この場合、UIImagePickerControllerはクラスであり、変更できません。
PhotoShareImageLayerヘッダーファイルの関連部分は以下に掲載されています。
// PhotoShareImageLayer.h (this is what psImageLayer is)
@interface PhotoShareImageLayer : CCLayer <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
@property(nonatomic, retain) UIImagePickerController *imagePicker;
@property(nonatomic, retain) UIImage *currentImage;
@end
このエラーの発生を防ぐ方法について何かアイデアはありますか?ありがとう。
編集:私がすでに試したことのリスト。
- UIImagePickerControllerのサブクラス化と追加
- (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [self setDelegate:nil]; }
編集2:クラッシュはで発生しませんimagePickerController:didCancel
。写真を撮ったとき、またはカメラの「撮り直し」を押したときのみ。「再取得」にはUIImagePickerDelegateメソッドはありません(「キャンセル」と「使用」のみ)。
編集3:アプリを続行してさらに書き込みを行った後、この問題はカメラに固有のものではないようです。Twitter、Facebook、連絡先などのモーダルビューを閉じるときに、同じ(または非常に類似した)エラーが発生します。