我有一个项目,我同时使用了 Objective C 和 Swift。 出于安全原因,对于一些用 Objective C 编写的类和方法,我使用了混淆。
这是我的代码:
#ifndef AccessManager_h
#define AccessManager ySbIXoscpewLLSwVacDpZvPvQeNDtG
#define loginWithUsername TEWhYyXaCdGrCViPbZZHWXoBiUPvPn
#endif
@interface AccessManager : AFHTTPSessionManager
-(void)loginWithUsername:(NSString*)username password:(NSString*)password success:(WSSuccessBlock)success failure:(WSFailureBlock)failure;
@end
这是我试图访问混淆类的快速代码
AccessManager.instance().login(withUsername: "my_user", password: "password", success: { (response) in
//TODO
}) { (error) in
//TODO
}
这是我在构建项目时遇到的错误
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_AccessManager", referenced from:
objc-class-ref in MySwiftClass.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如何访问从 Swift 混淆的 Objective C 类?
最佳答案
如果你想使用像这样的预处理器-
#define ABC DEF
其中 DEF 是类名。 您需要在您的桥接 header 中导入此文件,然后按如下方式定义它:
typedef DEF* ABC;
可以引用this answer
Swift 无法理解定义的预处理器的类型,这就是您无法使用它的原因。
关于ios - 如何从 swift 访问 Objective C 混淆类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46357895/