- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的头文件 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
然后我尝试将此接口(interface)导入我的 swift 源代码,但我收到以下警告:'swift_name' 属性具有无效的基本名称标识符 并且此函数的 swift 名称仍然是 测试。其他名称如 verif 或 verify1 效果很好。有什么想法吗?
最佳答案
verify
在 <usr/include/AssertMacros.h>
中定义为宏:
#ifndef verify
#define verify(assertion) __Verify(assertion)
#endif
用另一个宏来说__Verify
.结果,编译器将定义预处理为(您可以使用产品 -> 执行操作 -> 预处理“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 )")));
这绝对不是一个有效的 Swift 名称。
使用不同的名称是最简单的解决方案。否则#undef
调用宏是一种解决方法:
@interface Test : NSObject
#undef verify
- (void)test NS_SWIFT_NAME(verify());
@end
关于objective-c - NS_SWIFT_NAME 基本名称验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40111117/
我的头文件 Test.h 中有以下代码: #import @interface Test : NSObject - (void)test NS_SWIFT_NAME(verify()); @end
我正在开发一个用 Objective-C 编写的库,我希望它在 Swift 上桥接时尽可能“敏捷”。 例如,具有此定义的 Objective-C 方法 -(void)logProductWithId:
我正在尝试使 Objective-C 委托(delegate)协议(protocol)更漂亮以便在 Swift 中使用,但我在弄清楚如何使用 NS_SWIFT_NAME 时遇到了一些麻烦。是否可以使用
我有两个 C 函数: extern UIColor* LNRandomDarkColor(); extern UIColor* LNRandomLightColor(); 作为练习,我尝试将它们作为
我无处不在,它警告“swift_name”属性具有参数名称的无效标识符,并且 NS_SWIFT_NAME 未传播到 swift,因此根本不起作用。我尝试了各种名称。我想也许我有一些配置问题,但在哪里?
我是一名优秀的程序员,十分优秀!