self.delegate antwortetToSelector: ... kompiliert nicht

Habe ich implementiert ein Protokoll mit einer optionalen Methode, und in der aufrufenden Methode, die ich senden möchten respondsToSelector: zu self.delegate bevor ich die Nachricht zu senden, aber nicht kompilieren. Die nicht-bestanden-Meldung ist:

Keine Bekannten Instanz-Methode für Auswahl - 'respondsToSelector'.

Als work-around, ich "sanitized" die delegieren, wie unten gezeigt, die kompiliert...

//MyClass.h:

@class MyClass;

@Protocol MyClassDelegate
- (void)myClass:(MyClass *)sender willDoSomething:(BOOL)animated;
@end

@interface MyClass : UIViewController

@property (nonatomic, weak) id<MyClassDelegate> delegate;

@end

und

//MyClass.m:

...
@synthesize delegate = _delegate;
...

id sanitizedDelegate = self.delegate; //Hmmmm... why does this work?

if ([sanitizedDelegate respondsToSelector:@selector(myClass:willDoSomething:)]) {
    [self.delegate myClass:self willDoSomething:animated];
}

.

Ich überprüft eine Reihe von posts mit diese eine aber es gibt keine Antwort auf die compilation fail " - Problematik.

Außerdem werden alternative Zugriffsmethoden nicht funktionieren...

[self delegate]
//or
_delegate

Hat jemand diese gesehen oder kann Sie beraten, eine bessere Art des Umgangs?

IOS 5.0:(9A334), Xcode 4.2.1 (4D502)

InformationsquelleAutor der Frage vmanjz | 2012-03-06

Schreibe einen Kommentar