【发布时间】:2015-01-28 00:35:04
【问题描述】:
如何调用非公共 iOS 函数并从 Swift 访问非公共属性?具体来说,我想在 QuartzCore 框架中使用一个非公共类。
我想到的一个解决方案是创建“桥接”Objective-C 项目,将这些非公共 API 包装到公共 API 中,然后从 Swift 调用这个 Objective-C 函数。但是,我现在的解决方案是纯 Swift,我更愿意保持这种方式。有没有更稳妥的方法? (例如添加一些东西到Objective-C bridging header file)
注意:我知道你在想什么,私有 API 是私有的,因为它们不应该被使用。我知道风险,我知道所有不利因素、应用商店限制等。经过仔细考虑和大量研究,不幸的是,在这种特殊情况下,它似乎仍然是最好的方法。
【问题讨论】:
-
如果您将私有方法的声明正确地添加到桥接头文件中,就好像它们在一个类别中(例如,命名为
PrivateButImmaUseTheseAnyway),是否有效? -
@TheParamagneticCroissant 我不确定我是否理解您的意思。我不知道是否可以在桥接头文件中声明一个方法。我试图声明整个私有类 - 我收到一个编译错误,说该类不存在,但也许我没有正确地做到这一点。
-
我的意思是,你声明私有类和一个类别,像这样:
@interface NSPrivateClass (PrivateStuff),并在那里添加私有方法的声明。
标签: ios objective-c swift iphone-privateapi quartz-core