我可以将委托作为参数objective-c传递

时间:2012-06-13 13:29:49

标签: objective-c ios nsoperation

我正在使用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 - 或者我可以使用某种块吗?

1 个答案:

答案 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;
}