11

我正在使用 NSOperationQueue,我想将新的 NSOperations 添加到 NSOperationQueue。它是一个存在于我拥有的类的单例实例中的队列。如果我可以通过传递委托将所有内容移到静态类中,事情会变得容易得多。

这是我现在的代码 - 这是在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 - 或者我可以使用某种块?

4

1 回答 1

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;
}
于 2012-06-13T13:47:46.023 回答