Swift 中如何 import Objective-C 中带"+"的头文件(Category)?

2014-07-27 14:03:14 +08:00
 WildCat
比如oc中的 #import "UIButton+AFNetworking.h"
在Swift里怎么写?

import UIButton+AFNetworking
是不行的
6276 次点击
所在节点    iDev
6 条回复
cielpy
2014-07-27 14:15:39 +08:00
在XXX-Bridging-Header.h里#import "UIButton+AFNetworking.h"就可以了。所有swift类里都可以用。 XXX是工程名。
dorentus
2014-07-27 14:35:26 +08:00
import XXX 仅限于导入 Framework 的。
引用工程里的 Objective-C 或者 C 的内容得采用 1 楼的方法。Bridging Header 在工程属性里面可以设置和更改。

https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-XID_76
WildCat
2014-07-27 14:43:51 +08:00
感谢。
http://andelf.github.io/blog/2014/06/23/use-cocoapods-with-swift/

用这种方式似乎不行,我找下最佳方式吧。手写XXX-Bridging-Header.h比较好么。
WildCat
2014-07-27 14:44:07 +08:00
WildCat
2014-07-27 14:52:16 +08:00
@dorentus
@cielpy

囧,上文中提到的方法也是可以的,我看一个扩展的属性没代码提示就没敢写下去而已。
Thanks
dorentus
2014-07-27 14:57:01 +08:00
我自己写的项目里面,embedded framework 里面的 category method、C function 之类,在 import FRAMEWORK_NAME 之后倒是都立即可用了……

不过,我那个 embedded framework 是 Swift 和 Objetive-C 混合的,要导出的 Objectice-C 和 C 头文件都在 bridging header 里面 #import 了[1]。结果 Xcode6-Beta4 更新之后,忽然就说 embedded framework 不再支持 bridging header,完全没法用了……

[1] https://github.com/dorentus/bna-swift/blob/master/Padlock/Bridging-Header.h

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/124716

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX