2012-04-12 57 views
0

在我.h文件中關於我有這樣的:在IOS5,使用ARC同時創造我自己的委託,錯誤使用_weak

@protocol ScanBookDelegate 
- (void)MethodNameToCallBack:(NSArray *)s; 
@end 

@property (nonatomic, weak) id <ScanBookDelegate> delegate; 

在我的.m文件我有:

@synthesize delegate; 

我得到這個錯誤:

Existing ivar 'delegate' for __weak property 'delegate' must be __weak 

如何解決這個錯誤?

我返回一個NSArray *,因爲我從JSON結果返回數據。

UPDATE:

這裏是我的整個.h文件中 -

#import <UIKit/UIKit.h> 

@protocol ScanBookDelegate 
- (void)MethodNameToCallBack:(NSArray *)s; 
@end 

@interface jabBookScan : NSObject 
<NSURLConnectionDelegate, NSURLConnectionDataDelegate> 
{ 
    NSURLConnection *internalConnection; 
    NSMutableData *container; 
    id <ScanBookDelegate> delegate; 
} 
- (id)initWithRequest:(NSURLRequest *)req; 
- (void)start; 
- (NSMutableData *) lookupBook:(NSString *) isbn; 
- (void)fetchedData:(NSData *)responseData; 
@property (nonatomic, copy) NSURLRequest *request; 
@property (nonatomic, copy) void (^completionBlock)(id obj, NSError *err); 
@property (nonatomic, strong) NSDictionary *jsonRootObject; 
@property NSMutableData *responseData; 
@property NSURL *myURL; 
@property (nonatomic, weak) id <ScanBookDelegate> delegate; 
@end 
+0

您是否已經在其他地方定義了代表,在超類中說過? – atticus 2012-04-12 02:29:35

+0

@atticus - 我的印象是該協議正在定義委託。上面的.h和.m文件是針對同一個類的,因爲我指的是屬性中的協議,並嘗試將其合成,然後出現錯誤。 – 2012-04-12 09:25:15

+0

聽起來這個錯誤意味着一個伊娃被創建爲__strong,並且聲明屬性爲「弱」是有問題的。你介意發佈整個.h文件嗎? – atticus 2012-04-12 12:14:48

回答

2

在{}(在頂部),它應該工作擺脫id <ScanBookDelegate> delegate;。使用屬性時不需要指定。如果你真的想,那麼你可以聲明這個伊娃__weak,以便它與你的財產相匹配(默認情況下ivars是強大的)。

相關問題