Der neue Clang-Versand mit Xcode 6 ermöglicht durch den NS_DESIGNATED_INITIALIZER-Makro durch den Compiler erzwungene benannte Initialisierer. Wenn in der Deklaration einer Klasse eine der Methoden der Init-Familie markiert wird, werden alle anderen Initialisierer als "sekundär" (um die Terminologie von Apple zu verwenden) als Initialisierer betrachtet. Das heißt, sie sollten sich gegenseitig zu einem bestimmten oder sekundären Initialisierer aufrufen, bis sie einen bestimmten Initialisierer erreichen.
UIView markiert nichts als den designierten Initialisierer, also haben Sie irgendwo eine andere init-Methode der Klasse als designierten Initialisierer deklariert. Aus diesem Grund wird NSCoders Initialisierer als sekundär markiert und generiert eine Warnung. Ich habe ein Radar (rdar: // 17559176) darüber abgelegt, aber bis dahin kann es pro Datei deaktiviert werden, indem -Wno-objc-designated-initializers
angegeben wird, oder indem das entsprechende Diagnose-Push-Pop mit -Wobjc-designated-initializers
bereitgestellt wird.
aus welcher Klasse erbt diese Klasse? –
erbt von Uiview – ignotusverum
Und es ist IMO gutes Verhalten, diese Zuordnung aus if-Anweisung zu verschieben. –