在IOS5下,在创建我自己的委托时使用ARC,关于使用_的错误

在IOS5下,在创建我自己的委托时使用ARC,关于使用_的错误,ios5,delegates,automatic-ref-counting,Ios5,Delegates,Automatic Ref Counting,在我的.h文件中,我有以下内容: @protocol ScanBookDelegate - (void)MethodNameToCallBack:(NSArray *)s; @end @property (nonatomic, weak) id <ScanBookDelegate> delegate; 我得到这个错误: Existing ivar 'delegate' for __weak property 'delegate' must be __weak 如何解决此错误

在我的.h文件中,我有以下内容:

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

@property (nonatomic, weak) id  <ScanBookDelegate> delegate; 
我得到这个错误:

Existing ivar 'delegate' for __weak property 'delegate' must be __weak
如何解决此错误

我返回一个
NSArray*
,正如我从JSON结果返回数据一样

更新:

这是我的整个.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
#导入
@协议ScanBookDelegate
-(void)方法名称回调:(NSArray*)s;
@结束
@接口CAN:NSObject
{
NSURLConnection*内部连接;
NSMutableData*容器;
id代表;
}
-(id)initWithRequest:(NSURLRequest*)请求;
-(无效)开始;
-(NSMutableData*)查找本:(NSString*)isbn;
-(void)获取数据:(NSData*)响应数据;
@属性(非原子,副本)NSURLRequest*请求;
@属性(非原子,副本)无效(^completionBlock)(id obj,N错误*错误);
@属性(非原子,强)NSDictionary*jsonRootObject;
@属性NSMutableData*响应数据;
@属性NSURL*myURL;
@属性(非原子,弱)id委托;
@结束

摆脱
id委托在{}(在顶部)中,它应该可以工作。使用属性时,不需要指定该属性。如果您真的想,那么您可以声明ivar弱,以便它与您的属性匹配(默认情况下,ivar是强的)。

您是否已经在其他地方定义了一个委托,比如在超类中?@atticus-我感觉协议正在定义该委托。上面的.h和.m文件是针对同一个类的,因为我在属性中引用了协议,并尝试对其进行合成,然后我得到了错误。这听起来好像错误意味着已将ivar创建为强,并且将属性声明为“弱”是有问题的。你介意发布整个.h文件吗?@atticus-我回家后会这样做,但这些行是唯一使用委托的地方。Philippe称之为。我怀疑你也在定义ivar。
#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