2012-06-13 14 views
11

Ich arbeite mit einer NSOperationQueue und ich möchte neue NSOperations der NSOperationQueue hinzufügen. Es ist eine Warteschlange, die in einer Singleton-Instanz einer Klasse lebt, die ich habe. Es würde die Dinge viel einfacher machen, wenn ich alles durch Übergabe des Delegierten in die statische Klasse verschieben könnte.Kann ich delegieren als Parameter objective-c

Hier ist mein Code jetzt, wie es in lebt - das ist in einem 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]; 
     } 

Wenn ich den Delegaten als Parameter hinzufügen könnte ich konnte all dieses Codes in den gemeinsam genutzten Singletonklasse setzen und es nennen von überall in meiner App.

Ich nehme an, dass ich eine NSNotification verwenden könnte - oder kann ich einen Block von einer Art verwenden?

Antwort

20

Erstellen Sie einfach die entsprechende init-Methode, die den Delegaten übergibt.

- (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; 
} 
Verwandte Themen