2016-10-18 2 views
2

Ich habe folgenden Code in meine Header-Datei Test.h:NS_SWIFT_NAME Name Basisfehler überprüfen

#import <Foundation/Foundation.h> 

@interface Test : NSObject 

- (void)test NS_SWIFT_NAME(verify()); 

@end 

Und hier ist meine Implementierungsdatei:

#import "Test.h" 

@implementation Test 

- (void)test { 
    return; 
} 

@end 

Dann versuche ich, diese Schnittstelle zu importieren zu meinem schnellen Quellcode, aber ich bekomme folgende Warnung: Attribut 'swift_name' hat eine ungültige Kennung für den Basisnamen und Swift Name für diese Funktion ist immer noch Test. Andere Namen wie verif oder verify1 funktionieren einfach super. Irgendwelche Gedanken?

#ifndef verify 
    #define verify(assertion) __Verify(assertion) 
#endif 

in Bezug auf ein anderes Makro __Verify:

Antwort

3

verify wird als Makro in <usr/include/AssertMacros.h> definiert. Als Folge der Compiler die Definition zu vorverarbeitet (wie Sie mit Produkt überprüfen kann -> Aktion ausführen -> Preprocess „Test.m“)

- (void)test __attribute__((swift_name("do { if (__builtin_expect(!(), 0)) { DebugAssert('?*?*', 0, \"Third Party Client\" \": \" \"\", 0, 0, \"/PathTo/Test.h\", 22, (void*)0); } } while (0)"))); 

die definitiv kein gültiger Swift Name ist.

Die Verwendung eines anderen Namens wäre die einfachste Lösung. Ansonsten #undef das Makro ing ist eine Abhilfe:

@interface Test : NSObject 

#undef verify 
- (void)test NS_SWIFT_NAME(verify()); 

@end 
Verwandte Themen