Iphone 协议中的自定义类定义出错
我正在尝试设置自定义委托协议,但遇到了一个我不理解的奇怪错误。我想知道是否有人能指出我在这里做错了什么(我对Ob-C和协议使用还是新手) 情况是,我构建了自己的URLLoader类来管理从internet加载和解析数据。我现在正试图为代理设置一个协议,以实现该协议,该协议将响应URLLoader的事件。所以,下面是我的协议Iphone 协议中的自定义类定义出错,iphone,objective-c,Iphone,Objective C,我正在尝试设置自定义委托协议,但遇到了一个我不理解的奇怪错误。我想知道是否有人能指出我在这里做错了什么(我对Ob-C和协议使用还是新手) 情况是,我构建了自己的URLLoader类来管理从internet加载和解析数据。我现在正试图为代理设置一个协议,以实现该协议,该协议将响应URLLoader的事件。所以,下面是我的协议 #import <UIKit/UIKit.h> #import "URLLoader.h" /** * Protocol for delega
#import <UIKit/UIKit.h>
#import "URLLoader.h"
/**
* Protocol for delegates that will respond to a load.
*/
@protocol URLLoadResponder <NSObject>
- (void)loadDidComplete:(URLLoader *)loader;
- (void)loadDidFail:(URLLoader *)loader withError:(NSString *)error;
@end
我觉得我一定忽略了一些小而愚蠢的事情。任何人能提供的帮助都将不胜感激
哎呀。。。有人指出我应该包括urloader.h。这是:
#import <Foundation/Foundation.h>
#import "URLLoadResponder.h"
/**
* URLLoader inferface.
*/
@interface URLLoader : NSObject {
NSString *name;
NSString *loadedData;
NSMutableData *responseData;
NSObject *delegate;
BOOL _isLoaded;
}
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *loadedData;
@property (nonatomic, retain) NSObject *delegate;
- (void)loadFromURL:(NSString *)url;
- (void)addCompleteListener:(id)observer selector:(SEL)sel;
- (void)removeCompleteListener:(id)observer;
- (void)parseLoadedData:(NSString *)data;
- (void)complete;
- (void)close;
- (BOOL)isLoaded;
+ (NSURL *)makeUrlWithString:(NSString *)url;
+ (URLLoader *)initWithName:(NSString *)name;
@end
#导入
#导入“urloadresponder.h”
/**
*我的脸。
*/
@接口URLLoader:NSObject{
NSString*名称;
NSString*加载数据;
NSMutableData*响应数据;
NSObject*委托;
BOOL_已加载;
}
@属性(非原子,保留)NSString*名称;
@属性(非原子,保留)NSString*loadedData;
@属性(非原子,保留)NSObject*委托;
-(void)loadFromURL:(NSString*)url;
-(void)addCompleteListener:(id)观察者选择器:(SEL)SEL;
-(void)removeCompleteListener:(id)观察者;
-(void)parseLoadedData:(NSString*)数据;
-(无效)完成;
-(无效)关闭;
-(BOOL)孤岛加载;
+(NSURL*)makeUrlWithString:(NSString*)url;
+(URLLoader*)initWithName:(NSString*)名称;
@结束
在标题中有一个很好的循环引用,因为每个标题都包含另一个(URLLoader
包括URLLOADREPSONDER
和URLLOADREPSONDER
包括`URLLoader”)
您可以使用转发声明来中断它:
#import <UIKit/UIKit.h>
//#import "URLLoader.h" <-- Remove it to break the circular reference
@class URLLoader; // <-- Forward declaration
/**
* Protocol for delegates that will respond to a load.
*/
@protocol URLLoadResponder <NSObject>
- (void)loadDidComplete:(URLLoader *)loader;
- (void)loadDidFail:(URLLoader *)loader withError:(NSString *)error;
@end
#导入
//#导入“URLLoader.h”在URLLoader.h的末尾是否还有一些零散的东西?我们是否也可以看到URLLoader.h?嗯。。。如果我从URLLoader.h文件中删除URLLOADERSponder导入,它似乎可以工作。但是–这不允许我将URLLoader委托强制转换为NSObject。是否不允许使用协议定义强制转换对象属性?
#import <UIKit/UIKit.h>
//#import "URLLoader.h" <-- Remove it to break the circular reference
@class URLLoader; // <-- Forward declaration
/**
* Protocol for delegates that will respond to a load.
*/
@protocol URLLoadResponder <NSObject>
- (void)loadDidComplete:(URLLoader *)loader;
- (void)loadDidFail:(URLLoader *)loader withError:(NSString *)error;
@end