我应该在我的应用程序中使用 iOS 4 新功能吗?为什么?

2024-01-11

我正在更新我的一个应用程序,但我遇到了一个困境:

在我想添加 iOS 4 独特功能的地方,我别无选择,只能仅针对支持的设备实现它们 - 这里没有困境。

困境是当我有两种方法可以达到相同的效果时,一种是“旧方式”,另一种是“新方式”。 一个很好的例子是使用动画块,我可以使用以下语法:

[UIView animateWithDuration:2 animations:^{
     self.segmentedControl.alpha=0;
 }];

仅 iOS 4.0 支持。或者使用旧的方式,包括4在内的所有版本都支持。(还有很多其他类似的例子。)

你做什么?为什么?

这些块确实很棒,但是如果我想支持以前的版本,我将不得不编写更多代码?在这种情况下我可以通过使用它们获得什么收益?


一般来说,规则是支持最低版本的操作系统,该操作系统提供的功能使您能够交付所需的产品。在 iPhone OS 3.0 发布大约一个月后,我让所有应用程序都需要使用 iPhone OS 3.0,因为我需要支持自定义复制和粘贴,以及应用程序内的电子邮件。对于我的一个应用程序的免费版本,我想尝试 iAds,所以我只制作了 4.0。

新操作系统提供的内部代码改进的可能性在制定规则方面有点棘手。正如 Joe 指出的那样,您花费在与旧的做事方式作斗争的时间(可以通过迁移到新的操作系统版本来节省)是您没有修复错误或添加下一个伟大的新功能的时间。在某些时候,一种新的做事方式(例如块和 GCD)的优雅性太引人注目,不容忽视,即使它可能不会直接向您的应用程序添加任何新功能。

在 Mac 上,许多开发人员保持对当前版本操作系统以及 Apple 发布的上一个版本(目前为 Snow Leopard 和 Leopard)的支持。只有当新的操作系统出现时,他们才会放弃对之前落后版本的支持。其他人,例如威尔·希普利(Wil Shipley),主张立即完全使用新操作系统并忽略旧版本。这里的论点是,那些不愿为苹果新操作系统版本付费或不及时更新系统的人购买第三方应用程序的可能性要小得多。

我在 iOS 上也看到过这个。例如,我在 3.0 发布前后(当时 iPod touch 用户仍然需要为其操作系统更新付费)针对不同版本进行了广告测试。虽然我的应用程序的免费版本的下载量在 2.x 与 3.x 用户之间相对一致,但几乎没有 2.x 用户为该应用程序付费,而 3.x 用户则付费。

我的付费用户中没有人抱怨过早升级到 3.0(不过,他们确实对新功能赞不绝口),只有两个人抱怨我的免费版本只升级到 4.0,相比之下,有 56,000 人毫无问题地升级了。虽然我会给一些过渡期的时间,但我相信在新的操作系统版本发布后不久就会迁移到它们。现在,我正在将我的所有内容制作为 4.0 版本,以便我可以实现代码库的现代化。

最后,使用新操作系统版本获得的最后一个好处是,您对苹果公司更具吸引力,苹果公司总是希望在新设备和操作系统版本中使用新功能来推广应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该在我的应用程序中使用 iOS 4 新功能吗?为什么? 的相关文章

  • 忽略触摸事件,让其下面的视图处理触摸?

    我有一个用户可以触摸的可拖动视图 但它的某些矩形将没有图像 alpha 0 当用户单击透明区域时 我能够在没有 alpha 信息的情况下构造透明区域 我希望透明区域下方的视图 同一类 来检测触摸 我的策略是当用户触摸透明区域时让视图忽略触摸
  • 如何阻止 UITableView moveRowAt IndexPath 在重新排序时留下空白行

    我遇到一个问题 在重新排序 UITableViewCells 时 tableView 不随单元格滚动 仅出现一个空白行 任何后续滚动都会出现数组越界错误 堆栈跟踪中没有我的任何代码 这是该问题的快速视频 http www screencas
  • 有没有类似于 iOS 的 canOpenURL 来检查移动浏览器的 URL 方案? [复制]

    这个问题在这里已经有答案了 可能的重复 iPhone Safari 检查 JavaScript 是否支持 URL 方案 https stackoverflow com questions 627916 iphone safari check
  • 将 iPad xib 转换为 iPhone xib

    我看过很多关于将 iPhone xib 转换为 iPad xib 的帖子和教程 但我想反过来做 我能找到的唯一资源是 将 iPad 应用程序转换为 iPhone https stackoverflow com questions 68550
  • 将通配符包标识符转换为单个 ID

    我在应用程序商店中有一个使用通配符包标识符的应用程序 我想实现应用内购买 这需要非通配符ID 如何将现有应用的通配符 ID 转换为静态 ID 以进行应用内购买和推送通知 应用程序的捆绑标识符在更新之间必须始终保持相同 但 AppID 实际上
  • 创建电子书阅读应用程序的教程 - epub 文件格式 [重复]

    这个问题在这里已经有答案了 我正在制作一个电子书阅读应用程序 因为我想执行一些操作 例如更改文本颜色 字体 选择文本等 我知道 iphone os 4 0 和 ipad 现在支持 epub 文件格式 但我不知道如何创建此类应用程序 如果有人
  • UISearchBar 取消按钮没有响应

    我已经实现了搜索栏 一旦用户将焦点放在搜索栏中 它就会显示取消按钮 为此我写了searchBar showsCancelButton YES in my searchBarTextDidBeginEditing方法 在searchBarSe
  • CoreBluetooth广告检测时间

    这个问题早在10月份就已经讨论过here https stackoverflow com questions 12866551 corebluetooth connection setup time varies quite a bit 1
  • MPMediaItemPropertyAssetURL 仅针对 iPhone 5s 返回 null

    我一直在使用以下代码从 MPMediaItemPickerController 返回的 MPMediaItem 对象中提取资产 url 以便我可以将音乐文件从用户 iPhone itunes 音乐库复制到文档文件夹进行处理 但在 iPhon
  • nspredicate 数组中的多个项目

    如何使用NSPredicate满足多个条件 NSEntityDescription entity NSEntityDescription entityForName MessageData inManagedObjectContext ma
  • 如何在松开按钮后立即看到新的视频层?

    我有一个应用程序 用户可以按住按钮来拍摄视频 然而 当他们这样做时 带有视频播放的新图层不会立即出现 相反 有一个非常短的延迟 在用户松开按钮后 您可以看到相机仍然显示相机所看到的内容 延迟结束后 视频立即显示并开始播放 但是 我怎样才能使
  • 带块的 NSURLConnection

    我在用着 NSURLConnection connectionWithRequest req delegate self 然后我用 BOOL connection NSURLConnection connection canAuthenti
  • UITextField 在模拟器中崩溃,但在 iPhone 4 (4.2) 中则不然

    我面临一个奇怪的问题 不知道如何解决 我的应用程序中有一个带有 3 个文本字段的简单视图控制器 我已在 h 中将它们定义为 IBOutlet 并将它们与文件的所有者链接起来 其中两个使用默认键盘定义 另一个使用手机键盘键盘 当我尝试编辑电话
  • iPhone OS:从匿名对象获取方法和变量列表

    我正在构建我的第一个 iPhone Obj c 应用程序 并且我有大量的数据保存子类 我将它们传递给引用函数 对于 cite 函数 这些对象是匿名的 我需要找到一种方法来访问每个传递对象的所有变量 我一直在使用预构建的 NSArray 和选
  • 方向改变时重新定位控件

    我知道自动布局可用于在方向改变时使尺寸和位置保持一致 当方向改变时 是否可以完全改变布局 例如 请查看下面的纵向模式下简单登录屏幕的线框 现在 如果我旋转设备 我想完全重新定位控件 这种事情可以用自动布局来完成吗 如果没有 我该怎么办 谢谢
  • 如何在 UIAlertView (iOS) 中的其他两个按钮(堆叠)之间添加取消按钮

    我正在尝试创建一个带有三个按钮 将堆叠 的 UIAlertView 我希望 取消 按钮位于其他两个按钮之间的中间 我尝试将 cancelButtonIndex 设置为 1 但如果还有其他两个按钮 它只会将它们放置在索引 0 和 1 处 我知
  • rightBarButtonItem 信息按钮,右侧没有空格

    我有一个UIViewController设置为在其右侧显示一个信息按钮UINavigationItem像这样 UIButton infoButton UIButton buttonWithType UIButtonTypeInfoLight
  • 如何检测 UISwipeGestureRecognizer 的结束?

    来自苹果文档 滑动是一种离散手势 因此每个手势仅发送一次关联的操作消息 void touchesEnded NSSet touches withEvent UIEvent event 当我使用 UISwipeGestureRecognize
  • 在 iOS 中从 ACAccountStore 获取 Facebook uid?

    您好 我想获取 Facebook 用户的 UIDAC帐户商店在 iOS 6 中 self accountStore ACAccountStore alloc init ACAccountType FBaccountType self acc
  • 无法从 iOS 中的框架访问 .nib(XIB) 文件

    我已经从现有的代码库中创建了一个框架 并尝试在新的代码库中使用它 这很好用 但是当我尝试访问属于我的框架包的一部分的 nib 文件时 我的应用程序崩溃了 这是我用来访问视图控制器 XIB 文件的代码 testViewController c

随机推荐

  • & 导致返回的文本在 URL 中被截断

    我从之前维护代码的人那里继承了几个php脚本 他没有编程经验 主要是尽其所能地将东西组合在一起 今天我不得不重写一个WordPress的插件文件 现在我不知道出了什么问题 我面临的问题是 当在属于表的 else 语句中显示返回的文件名时 我
  • 为什么子文件夹没有部署到 Google App Engine Nodejs 应用程序

    我正在开发 NodeJS Web 应用程序并尝试在 Google 云中运行它 仅根文件夹中的文件会使用以下命令部署到 Google App Enginegcloud app deploy命令 appengine express 示例应用程序
  • 解析错误:语法错误,意外的 T_ELSE,我不知道为什么

    这是我的 php 代码 h3 class info Upcoming Games h3 h3 class info Athletic Events h3 为什么我会收到此错误 我已经有了我需要的所有括号 不是吗 The and else 不
  • 如何在 iOS 11 中禁用“保存到文件”?

    我有一个 iOS 应用程序 它创建 PDF 并使用 UIActivityViewController 使用默认共享功能进行共享 我不得不阻止一些共享设施 如 Vimeo Facebook Twillio 等 并且文件不应存储在设备上 在新的
  • 带圆形窗口的局部最大值

    我正在尝试使用圆形内核计算矩阵上的局部最大值滤波器 输出应该是局部最大值的单元格 对于输入 数据 中的每个像素 我需要通过圆形窗口查看它是否是局部最大值 从而返回值 1 否则返回 0 我有这段代码 基于这里的答案 如何将圆盘形掩码应用于 n
  • JSP、MySQL 和 UTF-8

    我正在思考 通过表单输入的国际字符没有完全按照输入的方式存储 并且存储的数据也没有按照存储在数据库中的方式返回 如果我输入 anak mlek patlad 并单击表单上的 保存 我使用的页面会显示 anak mlek patlad 但数据
  • xunit 添加信息到输出

    有谁知道如何在运行 xUnit 测试时向输出控制台添加附加信息 我正在使用 testdriven net 但我不认为这就是我的答案所在 我正在使用一个IUseFixture 实际上IClassFixture从 2 0 开始 在测试之间维护数
  • ServiceStack:如何处理错误?

    到目前为止 我使用 ServiceStack 取得了很好的效果 只是处理错误似乎很棘手 如果在消息序列化期间出现问题 例如 因为我忘记向消息添加默认构造函数 则客户端返回的所有消息都是服务器有内部错误且状态代码为 500 的消息 这Http
  • gwt 从 jsni 方法返回了除 int 之外的其他内容

    从今天开始 我收到了一条与昨天相同的代码的错误消息 但我没有进行任何更改 我收到此错误消息 警告 perchsearch 从 JSNI 方法 com google gwt dom client DOMImplStandardBase Cli
  • 无法使用 vue.js 调用 v-show 和 @click 同一按钮

    我正在尝试根据数据变量在按钮上显示文本并调用 vue js axios 方法的函数 我能够根据数据变量在按钮上显示文本 但无法调用 axios post 方法 我收到以下错误 当我点击按钮时 url http localhost 8085
  • 有没有办法用c3js更改标签?

    我正在使用新的c3js http c3js org 图书馆 有什么办法可以更改图表中某条数据的标签吗 我有一个条形图 其中每个条形都是一个美元价值 我希望每个条形的标签为 100 美元而不是 100 美元 如果我将值设置为 100 美元 则
  • OpenXML 替换所有文档中的文本

    我有下面的一段代码 我想用 NewText 替换文本 Text1 这样就可以了 但是 当我将文本 Text1 放入表格中时 该表格不再适用于表格内的 Text1 我想在所有文档中进行此替换 using WordprocessingDocum
  • initWithFrame 未调用,但 awakeFromNib 已调用

    我正在尝试对 NSOutlineView 进行子类化 这是我的代码 OutlineViewSublcas h import
  • 什么是uWSGI主模式?

    如果我只运行一个应用程序 在主模式下运行 uWSGI 有什么好处 主模式是否提供进程管理优势 使其比通过 Upstart 运行更可靠 upstart只是一个进程管理器 uWSGI master可以访问worker的很多内存区域 事实上恰恰相
  • 实体框架 - SaveChanges() 未获取生成的身份密钥

    我在我的项目中使用实体框架 这真是一场噩梦 我有一个 SQL 数据库 有一个名为 Form 的表 Form有一个ID 它是PK和Identity 它是自动增加的 这次我这样做 Dim form as int32 Dim dbform As
  • 如何使用 Altair 按日期时间值突出显示条形

    如同 https altair viz github io gallery bar chart with highlighted bar html https altair viz github io gallery bar chart w
  • 调用模板函数时出现意外输出

    下面的代码是我正在经历的 cpp 测验的一部分 include
  • pandas concat 列ignore_index 不起作用

    我正在尝试列绑定数据框 例如 R 的cbind 确实 并且与熊猫有问题concat as ignore index True似乎不起作用 df1 pd DataFrame A A0 A1 A2 A3 B B0 B1 B2 B3 D D0 D
  • 使用剪贴板的 C# 多线程应用程序

    我正在开发一个多线程应用程序 我面临着必须使用剪贴板的问题 我正在使用 Qlikview API 并且我需要将表格复制到 Excel 中 问题是我认为会发生什么是这样的 在线程 1 上 我打开 QW 文档并复制表格 在将其粘贴到 Excel
  • 我应该在我的应用程序中使用 iOS 4 新功能吗?为什么?

    我正在更新我的一个应用程序 但我遇到了一个困境 在我想添加 iOS 4 独特功能的地方 我别无选择 只能仅针对支持的设备实现它们 这里没有困境 困境是当我有两种方法可以达到相同的效果时 一种是 旧方式 另一种是 新方式 一个很好的例子是使用