gpt4 book ai didi

IOS旧版本检查

转载 作者:行者123 更新时间:2023-11-29 01:17:18 24 4
gpt4 key购买 nike

我正在开发 IOS 和 AppleWatch 应用程序。这些应用程序在一个应用程序中。我的应用程序最低 IOS 版本是 IOS 6.0。但是 AppleWatch 代码的最低 IOS 版本是 IOS 9.0。我在 IOS 6 设备上测试了这段代码,但是这个代码块运行了。我不想在 IOS 6 中运行此代码块。我想在 IOS 9.0 中运行。请帮忙。

.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

.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;
}

最佳答案

更新:对于 header ,您确实需要预处理器指令(或考虑切换到 swift 并使用 @available)

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

#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_MAX_ALLOWED 替换为 __IPHONE_OS_VERSION_MIN_REQUIRED


在这种情况下不要使用预处理器指令,它可能会出错并混淆编译器

- (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 block ,我认为这是您想要的并且向下兼容

关于IOS旧版本检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35011590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com