gpt4 book ai didi

xcode - 检测我是否使用旧版 iOS 不可用的框架的简单方法

转载 作者:可可西里 更新时间:2023-11-01 03:31:55 25 4
gpt4 key购买 nike

在马拉松式的编码 session 之后,我添加了太多代码而没有跟踪所有内容,我现在有一个应用程序可能有一些 iOS 5.0 和 5.1 特定的枚举、调用和框架,但是,我希望我的应用程序支持 iOS回到 4.3。

我希望有一种简单的方法可以将 Xcode 设置为像针对 iOS 4.3 进行编译一样进行编译,这样我就可以得到所有需要排除和/或编码的违规代码的错误, 适用于旧版 iOS。

我想我会通过使用编译器选项得到它:

-D__IPHONE_OS_VERSION_MAX_ALLOWED=__IPHONE_4_3

但这最终会在系统头文件中产生错误,而不是我的代码。

鉴于大多数枚举和框架的可用性都包含在头文件中,我不得不认为有一种简单的方法可以满足我的需要。

有没有人设法在不使用旧 SDK 下载旧 Xcode 的情况下做这样的事情?在那里,我可能会遇到 Xcode 无法在 Lion(我正在运行的)下正常运行的问题。

更新:我似乎无法在 Lion 上安装 Xcode 3.2.6。我现在必须找到 Snow Leopard Mac,除非我找到使用编译器选项或强制 Xcode 使用旧 SDK 的方法...

这是@mattjgalloway 的回答对我所做的示例:

Lumin 应用组

/Users/mz/Dev/Working/Lumin/Lumin/MyUIScreen.m

  • “亮度”已弃用:太新了!
  • “亮度”已弃用:太新了!
  • “亮度”已弃用:太新了!
  • “亮度”已弃用:太新了!

/Users/mz/Dev/Working/Lumin/Lumin/LuminViewController+Share.m

  • “TWTweetComposeViewController”已弃用:太新了!
  • “TWTweetComposeViewController”已弃用:太新了!
  • “TWTweetComposeViewController”已弃用:太新了!

/Users/mz/Dev/Working/Lumin/Lumin/LuminViewController.m

  • 'scrollView' 已弃用:太新了!
  • “connectionWithMediaType:”已弃用:太新了!
  • “connectionWithMediaType:”已弃用:太新了!
  • “AVCaptureDeviceSubjectAreaDidChangeNotification”已弃用:太新了!
  • “setSubjectAreaChangeMonitoringEnabled:”已弃用:太新了!

非常好。

我将以下内容放入项目的 .pch 文件中,并计划对所有项目都这样做:

#if DEBUG
#define __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED __IPHONE_OS_VERSION_MIN_REQUIRED
#import "MJGAvailability.h"
#endif

对于任何项目,我现在都会根据我所针对的最早的 iOS 自动监视 SDK 问题。虽然我仍然需要担心 SDK 的变化,但至少我知道大多数框架添加对于旧的 iOS 版本是不可用的。

最佳答案

看看我的MJGAvailability.h here on GitHub .基本上它定义了正确的预处理器 #define 以便较新的 API 看起来像是已被弃用,因此您会收到编译器警告。文件顶部有一些文档,但基本上您只需在 PCH 文件中执行此操作:

#define __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED __IPHONE_4_3
#import "MJGAvailability.h"

如果你想支持到 iOS 4.3。

它当然不是 100% 万无一失,但我发现它对于完成您的要求非常有用。

如果您想抑制警告,因为您可能知道可以使用该 API(例如,您已经用 respondsToSelector 包围了它),那么您可以这样做:

UINavigationBar *navBar = self.navigationController.navigationBar;
if ([navBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
[navBar setBackgroundImage:[UIImage imageNamed:@"navbar_bg.png"] forBarMetrics:UIBarMetricsDefault];
#pragma clang diagnostic pop
}

关于xcode - 检测我是否使用旧版 iOS 不可用的框架的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10172383/

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