我的头文件 Test.h 中有以下代码:
#import <Foundation/Foundation.h>
@interface Test : NSObject
- (void)test NS_SWIFT_NAME(verify());
@end
这是我的实施文件:
#import "Test.h"
@implementation Test
- (void)test {
return;
}
@end
然后我尝试将此界面导入我的swift源代码,但是我收到以下警告:&#39; swift_name&#39;属性具有基本名称的无效标识符,此函数的swift名称仍为 test 。其他名称如 verif 或 verify1 的效果非常好。 有什么想法吗?
答案 0 :(得分:3)
verify
被定义为<usr/include/AssertMacros.h>
中的宏:
#ifndef verify
#define verify(assertion) __Verify(assertion)
#endif
就另一个宏__Verify
而言。结果,编译器
预处理定义(正如您可以验证的那样)
产品 - &gt;执行操作 - &gt;预处理&#34; Test.m&#34;)
- (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 )")));
这绝对不是一个有效的Swift名称。
使用其他名称将是最简单的解决方案。否则#undef
宏
是一种解决方法:
@interface Test : NSObject
#undef verify
- (void)test NS_SWIFT_NAME(verify());
@end