2012-04-09 5 views
13

を構築しません.hファイルから:は、私は、このコード(スニペット)を持っている

#import <UIKit/UIKit.h> 
#import "ILView.h" 

/** 
* Controls the orientation of the picker 
*/ 
typedef enum { 
    ILHuePickerViewOrientationHorizontal  = 0, 
    ILHuePickerViewOrientationVertical  = 1 
} ILHuePickerViewOrientation; 

@class ILHuePickerView; 

/** 
* Hue picker delegate 
*/ 
@protocol ILHuePickerViewDelegate 

/** 
* Called when the user picks a new hue 
* 
* @param hue 0..1 The hue the user picked 
* @param picker The picker used 
*/ 
-(void)huePicked:(float)hue picker:(ILHuePickerView *)picker; 

@end 

/** 
* Displays a gradient allowing the user to select a hue 
*/ 
@interface ILHuePickerView : ILView { 
    id<ILHuePickerViewDelegate> delegate; 
    float hue; 
    ILHuePickerViewOrientation pickerOrientation; 
} 

/** 
* Delegate 
*/ 
//@property (assign, nonatomic) IBOutlet id<ILHuePickerViewDelegate> delegate; 
@property (assign, nonatomic) IBOutlet __unsafe_unretained id<ILHuePickerViewDelegate> delegate; 

/** 
* The current hue 
*/ 
@property (assign, nonatomic) float hue; 

.mファイルは次のようになります。

#import "ILHuePickerView.h" 
#import "UIColor+GetHSB.h" 

@interface ILHuePickerView(Private) 

-(void)handleTouches:(NSSet *)touches withEvent:(UIEvent *)event; 

@end 

@implementation ILHuePickerView 

@synthesize color, delegate, hue, pickerOrientation; 

#pragma mark - Setup 

-(void)setup 
{ 
    [super setup]; 

私はSOに見えました同様のケースでは、私はプロパティに "__unsafe_unretained"を入れる必要があることを見ました...私は(うまくいけば)それをしましたが、ビルドにはまだ失敗します。完全なエラーメッセージは次のとおりです。プロパティのための既存のIVAR「デリゲート」のassign属性を持つ「デリゲートは、」私は間違って何をやっている

Screenshot

を__unsafe_unretainedしなければなりませんか?

+0

いい質問ですが、私は投票しました。 – user3182143

答えて

33

エラーメッセージは、IVARあなたを語っているとおり:ので

@property (assign, nonatomic) IBOutlet id<ILHuePickerViewDelegate> delegate; 

@interface ILHuePickerView : ILView { 
    id<ILHuePickerViewDelegate> delegate; // <-- This is the ivar 

ニーズ__unsafe_unretained宣言する:

__unsafe_unretained id<ILHuePickerViewDelegate> delegate; 

ないプロパティをARC所有権修飾子はプロパティには適用されません。変数にのみ適用されます。

@synthesizeディレクティブはあなたのための IVAR(正しいARC修飾子付き)を作成するので、しかし、あなただけのその宣言を省略することができます:

、実際には、今 をお勧めします
@interface ILHuePickerView : ILView 

/** 
* Delegate 
*/ 
@property (assign, nonatomic) IBOutlet id<ILHuePickerViewDelegate> delegate; 

// etc. 

手順; TOCPLのDefining Classesを参照してください。

+0

ありがとうございました...私は@propertyをコメントしてみましたが、うまくいかなかったので、__unsafe_unretainedを宣言に追加しました...そのエラーのビルドをクリーンアップしました...ありがとうございます。 – SpokaneDude

+0

非常に良い答え。私はそれを上回った。 – user3182143

2

これまでILColorPickerを使用していましたが、これは絶対にARC対応ではありません。 ILColorPickerクラスのコンパイラフラグ設定で -fno-objC-arcを設定します。

関連する問題