我正在使用NSOperationQueue,我想在NSOperationQueue中添加新的NSOperations。它是一个存在于我所拥有的类的单例实例中的队列。如果我可以通过传递委托将所有内容移动到静态类中,这将使事情变得更容易。
以下是我现在的代码 - 这是cellForRowAtIndexPath
NSString *key = [NSString stringWithFormat:@"%@%@",cell.dataItem.ItemID, cell.dataItem.ManufacturerID];
if (![self.imgOperationInQueue valueForKey:key]) {
ImageOperation *imgOp = [[ImageOperation alloc] initWithItemID:cell.dataItem.ItemID withManufacturerID:cell.dataItem.ManufacturerID withReurnType:kThumbnail];
imgOp.identifier = [NSString stringWithFormat:@"%i", cell.tag];
imgOp.delegate = self;
[[SharedFunctions sharedInstance] addImageOperationToQueue:imgOp];
[imgOp release];
// store these in the dictionary so we don;t queue up requests more than once
[self.imgOperationInQueue setValue:cell.dataItem.ItemID forKey:key];
}
如果我可以将委托作为参数添加,我可以将所有这些代码放入共享单例类中,并从我的应用程序中的任何位置调用它。
我想我可以使用NSNotification - 或者我可以使用某种块吗?
答案 0 :(得分:22)
只需创建传递委托的相应init方法。
- (id)initWithItemID:(NSString *)itemID
withManufacturerID:(NSString *)manufacturerID
withReurnType:(NSInteger)type
delegate:(id<YourDelegate>)theDelegate
{
self = [super init];
if (self)
{
.... // Other assignments
self.delegate = theDelegate;
}
return self;
}