所以,你有一个雨燕的项目,以及您添加的苹果 “Availability.h” from here。
然后你想在Objective-C或Swift中使用这些宏。这很简单,但重要的是要注意,你不能直接在Swift中使用C宏。你将需要一个客观的C包装。
// AvailableTester.h
#import <Foundation/Foundation.h>
@interface AvailableTester : NSObject
- (BOOL) testAvailabilityMacroLessThaniPhone3;
- (BOOL) testAvailabilityMacroGreaterThaniPhone3;
@end
和实现:
// AvailableTester.m
#import "AvailableTester.h"
#import "Availability.h"
@implementation AvailableTester
- (BOOL) testAvailabilityMacroLessThaniPhone3
{
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_0
return YES;
#else
return NO;
#endif
}
- (BOOL) testAvailabilityMacroGreaterThaniPhone3
{
#if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_3_0
return YES;
#else
return NO;
#endif
}
@end
然后在您的桥梁标题:
#import "AvailableTester.h"
现在你可以从斯威夫特使用它:
let test = AvailableTester()
var result = test.testAvailabilityMacroLessThaniPhone3()
print("Result1 was \(result)")
result = test.testAvailabilityMacroGreaterThaniPhone3()
print("Result2 was \(result)")
感谢您的答复!不幸的是,这不是我正在寻找的,我想在Objective-C中使用Available,而不是Swift。而我无法正确导入到我的Objective-C头文件,它只是不起作用 –
你有没有在你的项目?这不是Apple框架的一部分 - 它是一个独立的文件。从链接下载并将其拖入您的项目。 –
我在这里有点困惑,看到一些帖子指出它是Foundation框架的一部分。在我正在使用的项目中,它构建得很好,但它是一个纯粹的Objective-C项目,文件位于: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/ iPhoneSimulator.sdk/usr/include目录/ Availability.h 有一个标题搜索路径: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include 我试着将它添加到我的项目- 没有运气。复制可用性文件,尝试构建项目,将返回给您结果 –