首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IOS旧版本检查

IOS旧版本检查
EN

Stack Overflow用户
提问于 2016-01-26 10:23:08
回答 1查看 709关注 0票数 0

我正在开发一个IOS和AppleWatch应用程序。这些应用程序在一个应用程序中。我的应用程序min版本是IOS6.0。但是用于AppleWatch代码的min IOS版本是IOS9.0。我在IOS 6设备中测试了这段代码,但是这个代码块运行。我不想在IOS 6中运行这个代码块,我想在IOS 9.0中运行。请帮帮忙。

代码语言:javascript
复制
.h 
#import <Foundation/Foundation.h>
#if defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0
#import <WatchConnectivity/WatchConnectivity.h>
#endif

#if defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0
@interface WatchConnectivityManager : NSObject<WCSessionDelegate>{
#else
@interface WatchConnectivityManager : NSObject{
#endif

}

@property(nonatomic, assign) BOOL oneTimeSaved;

+(WatchConnectivityManager*)getInstance;

-(void)sharedDefaultsDataSave:(NSString*)params;
@end
代码语言:javascript
复制
.m

- (id) init
{
    if (self = [super init]) {

        #if defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0
        //This code run IOS 9.0
        if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9.0") && NSClassFromString(@"WCSession")!=nil && [WCSession isSupported]) {
            WCSession *session = [WCSession defaultSession];
            session.delegate = self;
            [session activateSession];

        }

        #endif

    }
    /* finally return the object */

    return self;
}
EN

回答 1

Stack Overflow用户

发布于 2016-01-26 11:03:58

更新:用于真正需要预处理指令的头的(或考虑切换到@available)

不过,我认为你使用了错误的指令:

代码语言:javascript
复制
#import <Foundation/Foundation.h>
#if defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0
#import <WatchConnectivity/WatchConnectivity.h>
#endif

#if defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0
@interface WatchConnectivityManager : NSObject<WCSessionDelegate>{
#else
@interface WatchConnectivityManager : NSObject{
#endif
}

请注意,我用__IPHONE_OS_VERSION_MIN_REQUIRED替换了__IPHONE_OS_VERSION_MIN_REQUIRED

不要在这个场景中使用预处理器指令,它可能出错并混淆编译器

代码语言:javascript
复制
- (id) init
{
    if (self = [super init]) {
        if (NSClassFromString(@"WCSession") && [WCSession isSupported]) { // [WCSession class] in iOS
            WCSession *session = [WCSession defaultSession];
            session.delegate = self;
            [session activateSession];
        }
    }
    return self;
}

将确保在WCSession可用时只调用if块,这是我认为您需要的并且向下兼容的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35011590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档