PhotoPicker のサンプル コードでは、オーバーレイ ビューを使用しています。以下は、アプリで使用している PhotoPicker の関連コードですが、 ARCを使用したいのですが、 PhotoPicker は ARC を使用していません。PhotoPicker と ARC の間の他の競合は回避できたと思いますが、これは回避できませんでした。
以下のOverlayViewController.h
行をそのまま使用するid <OverlayViewControllerDelegate> delegate;
と、エラーが発生しますExisting ivar 'delegate' for property 'delegate' with assign attribute must be __unsafe_unretained
。
OverlayViewController.h
#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioServices.h>
@protocol OverlayViewControllerDelegate;
@interface OverlayViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
{
id <OverlayViewControllerDelegate> delegate; // **THIS IS THE KEY LINE**
}
@property (nonatomic, assign) id <OverlayViewControllerDelegate> delegate;
@property (nonatomic, retain) UIImagePickerController *imagePickerController;
- (void)setupImagePicker:(UIImagePickerControllerSourceType)sourceType;
@end
@protocol OverlayViewControllerDelegate
- (void)didTakePicture:(UIImage *)picture;
- (void)didFinishWithCamera;
@end
しかし、アドバイス here に従い、その行をコメントアウトするか、その行の先頭に を追加すると__unsafe_unretained
、問題が発生Cannot find protocol declaration for 'OverlayViewControllerDelegate'; did you mean 'UISplitViewControllerDelegate'?
しMyViewController.h
ます。
MyViewController.h
#import <UIKit/UIKit.h>
#import "OverlayViewController.h"
@interface MyViewController : UIViewController <UIImagePickerControllerDelegate, OverlayViewControllerDelegate>
@end