2 Stimmen

Zugriff auf eine zugewiesene Delegateneigenschaft von Objective-C Block? aus (iOS)

Ist es in Ordnung, auf eine Delegateneigenschaft von einem Block aus zuzugreifen?

@interface TheObject : NSObject
...
@property (nonatomic, assign) id<SomeDelegate> delegate;

@synthesize delegate

- (void) someMethod {
  [someObject doSomethingWithCompletionHandler:^(NSArray *)someArray {
      [self.delegate otherMethod:someArray];   
 }];
}

Was passiert, wenn der Delegat gelöscht wird (von der dealloc-Methode in dem Objekt, das auch den Delegaten festgelegt hat), bevor der Abschluss-Handler aufgerufen wird? Könnte es ein Speicherfehler sein? Ich weiß nicht, wie man __block für Immobilien...

Antwort von unten:

Wenn der Delegat von dem Objekt, das beim Dealloc-Aufruf der Delegat ist, abgetrennt wird, ist alles in Ordnung.

@property (nonatomic, retain) TheObject theObject;

@synthezise theObject = _theObject;

- (void) thatMethod {
  self.theObject = [[TheObject alloc] init] autorelease];
  _theObject.delegate = self;
}

- (void) dealloc {
  _theObject.delegate = nil;
  self.theObject = nil;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X