Im LLVM 3.0-Compiler in Xcode 4.2 können Sie die Warnung wie folgt unterdrücken:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[self.ticketTarget performSelector: self.ticketAction withObject: self];
#pragma clang diagnostic pop
Wenn Sie den Fehler an mehreren Stellen erhalten und das C-Makrosystem verwenden möchten, um die pragmas zu verstecken, können Sie ein Makro definieren, um das Unterdrücken der Warnung zu erleichtern:
#define SuppressPerformSelectorLeakWarning(Stuff) \
do { \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \
Stuff; \
_Pragma("clang diagnostic pop") \
} while (0)
Sie können das Makro wie folgt verwenden:
SuppressPerformSelectorLeakWarning(
[_target performSelector:_action withObject:self]
);
Wenn Sie das Ergebnis der ausgeführten Nachricht benötigen, können Sie Folgendes tun:
id result;
SuppressPerformSelectorLeakWarning(
result = [_target performSelector:_action withObject:self]
);