5
A
回答
0
您可以使用NSHost
的address
或addresses
方法。
6
在應用程序目標中,橋接標題可以實現。在框架目標內部,事情更加棘手。在Swift代碼中,我們只能導入所謂的模塊。訣竅是定義一個模塊映射,提供所需的C庫資源,並通過在構建設置(構建設置 - > Swift編譯器 - >導入路徑)中將SWIFT_INCLUDE_PATHS設置爲模塊映射文件的路徑,使其可見。有兩種方法可以做到這一點:
1)以下允許通過直接暴露ifaddrs.h接口來實現純快速實現,但遺憾的是需要一個確切的頭文件路徑,如果您曾經將以開源方式發佈您的圖書館。
module.modulemap
module ifaddrs [system] {
header
"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/ifaddrs.h"
export *
}
添加到SWIFT代碼
import ifaddrs
2)第二個方法是創建一個Objective-C類,其提供了一個接口ifaddrs.h但隱藏了ifaddrs.h source * .m文件的實際導入。
NetworkTools.h
@interface NetworkTools : NSObject
+ (NSDictionary *)getIFAddresses;
@end
NetworkTools.m
#import "NetworkTools.h"
#include <ifaddrs.h>
#include <arpa/inet.h>
#include <net/if.h>
#include <netdb.h>
@implementation NetworkTools
+ (NSDictionary *)getIFAddresses {
NSDictionary *addresses;
// code
return addresses;
}
module.modulemap
module NetworkTools {
header "Obj-C Tools/NetworkTools.h"
export *
}
加入SWIFT代碼
import NetworkTools
欲瞭解更多信息關於這一切是如何一起工作,檢查出:
示例項目在Github上:https://github.com/danieleggert/mixed-swift-objc-framework
以及有關鏘模塊的文章:http://clang.llvm.org/docs/Modules.html
相關問題
- 1. 管理ifaddrs以及在Swift中返回MAC地址
- 2. 在Swift中使用框架
- 3. 在Swift 2.3中使用Swift 3框架
- 4. CocoaLumberjack Swift框架
- 5. 如何在swift iOS中使用Objective C靜態框架swift cocoa框架
- 6. Swift Mapbox 3.01框架
- 7. 包裝XIB在Swift框架中分發?
- 8. 在AppCode中創建Swift框架
- 9. Xcode框架在Swift 3.0中打破
- 10. 在Swift中使用SoundTouch框架
- 11. 直接在Swift中使用Apple框架
- 12. 在swift框架中查找新功能
- 13. 如何在Swift框架中使用Cocoapods?
- 14. 在目標c框架中集成swift
- 15. Swift和Objective C項目的Swift框架
- 16. Swift框架類到Swift應用程序
- 17. Swift中SKScene中的社會框架
- 18. Swift:添加BigInteger框架
- 19. SWIFT 3.0.1支持SwiftyJSON框架
- 20. Swift框架訪問級別
- 21. 創建Swift框架(重訪)
- 22. 框架導致崩潰(swift)
- 23. 不生成swift框架
- 24. Swift Import Obj-C框架
- 25. Swift框架入口點
- 26. Swift中加速框架的問題
- 27. .h文件在我的Swift框架
- 28. 在Swift框架上橋接文件
- 29. Swift框架可以引用另一個Swift框架的類擴展嗎?
- 30. 將外部框架嵌入到Swift中的自制私有框架中
我需要它在iOS和OS X上工作,因爲NSHost只在OS X中可用,所以我無法使用它。 – Asyra 2014-09-12 12:17:55
您可能想將其添加到您的問題。 – zneak 2014-09-12 12:19:02