我不确定这是否会对您有所帮助,但我有类似的情况,我有一个用于数据加载的类方法。在这种情况下,类会实例化自己(这样调用者就不需要),直到完成。(此代码进行了一些编辑以使其在这里工作)
头文件:
@protocol DataLoaderDelegate2 <NSObject>
- (void) dataLoaderSuccess:(NSData *)data loader:(id)theloader;
- (void) dataLoaderFailed:(NSString *)error loader:(id)theloader;
@end
@interface DataLoader2 : NSObject {
NSURLConnection *conn;
NSMutableData *receivedData;
NSFileHandle *fileHandle;
id <DataLoaderDelegate2> delegate;
}
@property (nonatomic, assign) id<DataLoaderDelegate2>delegate;
调用以启动该过程 - 对 initWithRequest 的调用传递“self”。
+ (DataLoader2 *)loadWithURLRequest:(NSURLRequest *)req delegate:(id)_delegate
{
DataLoader2 *dl = [[DataLoader2 alloc] init];
[dl setDelegate:_delegate];
conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
return dl;
}
数据加载完成后,它会清理类似
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
if ([delegate respondsToSelector:@selector(dataLoaderSuccess:loader:)])
[delegate dataLoaderSuccess:(fileHandle)?(id)fileHandle:(id)receivedData loader:self];
[self autorelease];
}