0

我用 sdk 6.1 编译了我的应用程序,并将部署目标设置为 iOS 4.3。这是否意味着我的应用可以在 4.3 上运行?我没有这样的设备,也无法实际测试它,但我想知道该应用程序是否可以在 4.3 上运行。

4

5 回答 5

1

将部署目标设置为 iOS 4.3 可确保您的应用支持 iOS 4.3 及更高版本,除非您未使用仅在更高版本中支持的任何功能,例如 ARC、Storyboard、自动布局。最好在设备或模拟器上进行测试。可以通过Xcode下载iOS4.3模拟器

Xcode-> 首选项-> 下载-> iOS 4.3 模拟器

于 2013-05-27T05:23:02.303 回答
1

如果您觉得您使用的类可能在其他 ios 版本中不可用,那么您可以使用

使用 NSClassFromString 函数。将您的类的名称作为字符串传递给此方法。

如果此函数的返回值为 nil,则该类在运行您的应用程序的设备上不可用;

否则,该课程在设备上可用,您可以继续使用它。

这是一个例子:

i am checking for NSJSONSerialization class, similarly you can check for your class also,

if (NSClassFromString(@"NSJSONSerialization") != nil) {
 /* You can use this class */

     [NSJSONSerialization JSONObjectWithData:... /* Put data here */
                      options:...           /* Put options here */ 
                       error:...];        /* Handle errors here */
} else {
     /* That class is not available */
}
于 2013-05-27T06:09:53.040 回答
0

您可以在任何 iOS 版本高于或等于您设置的部署目标的设备上运行。

所以请记住,您没有使用该版本不支持的任何框架或功能。

希望它可以帮助你。

于 2013-05-27T05:27:16.997 回答
0

以这种方式进行测试是一种效果很好的解决方案,但不能 100% 保证

/**
 * Example usage:
 *   If you want to see if you're using methods that are only defined in iOS 4.0 and lower 
 *   then you would use the following. Replace the __IPHONE_4_0 with whatever other macro 
 *   you require. See Availability.h for iOS versions these relate to.
 * 
 * YourProjectPrefixHeader.pch:
 *   #define __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED __IPHONE_4_0
 *   #import "ThisFile.h"
 *   
 *   // The rest of your prefix header as normal
 *   #import <UIKit/UIKit.h>
 */

#import <Availability.h>

#define __AVAILABILITY_TOO_NEW __attribute__((deprecated("TOO NEW!")))

#ifndef __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED
#define __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED __IPHONE_OS_VERSION_MIN_REQUIRED
#endif

#if __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED < __IPHONE_OS_VERSION_MIN_REQUIRED
#error You cannot ask for a soft max version which is less than the deployment target
#endif

#if __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED < __IPHONE_2_0
#undef __AVAILABILITY_INTERNAL__IPHONE_2_0
#define __AVAILABILITY_INTERNAL__IPHONE_2_0 __AVAILABILITY_TOO_NEW
#endif

#if __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED < __IPHONE_2_1
#undef __AVAILABILITY_INTERNAL__IPHONE_2_1
#define __AVAILABILITY_INTERNAL__IPHONE_2_1 __AVAILABILITY_TOO_NEW
#endif

#if __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED < __IPHONE_2_2
#undef __AVAILABILITY_INTERNAL__IPHONE_2_2
#define __AVAILABILITY_INTERNAL__IPHONE_2_2 __AVAILABILITY_TOO_NEW
#endif

#if __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED < __IPHONE_3_0
#undef __AVAILABILITY_INTERNAL__IPHONE_3_0
#define __AVAILABILITY_INTERNAL__IPHONE_3_0 __AVAILABILITY_TOO_NEW
#endif

#if __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED < __IPHONE_3_1
#undef __AVAILABILITY_INTERNAL__IPHONE_3_1
#define __AVAILABILITY_INTERNAL__IPHONE_3_1 __AVAILABILITY_TOO_NEW
#endif

#if __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED < __IPHONE_3_2
#undef __AVAILABILITY_INTERNAL__IPHONE_3_2
#define __AVAILABILITY_INTERNAL__IPHONE_3_2 __AVAILABILITY_TOO_NEW
#endif

#if __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED < __IPHONE_4_0
#undef __AVAILABILITY_INTERNAL__IPHONE_4_0
#define __AVAILABILITY_INTERNAL__IPHONE_4_0 __AVAILABILITY_TOO_NEW
#endif

#if __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED < __IPHONE_4_1
#undef __AVAILABILITY_INTERNAL__IPHONE_4_1
#define __AVAILABILITY_INTERNAL__IPHONE_4_1 __AVAILABILITY_TOO_NEW
#endif

#if __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED < __IPHONE_4_2
#undef __AVAILABILITY_INTERNAL__IPHONE_4_2
#define __AVAILABILITY_INTERNAL__IPHONE_4_2 __AVAILABILITY_TOO_NEW
#endif

#if __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED < __IPHONE_4_3
#undef __AVAILABILITY_INTERNAL__IPHONE_4_3
#define __AVAILABILITY_INTERNAL__IPHONE_4_3 __AVAILABILITY_TOO_NEW
#endif

#if __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED < __IPHONE_5_0
#undef __AVAILABILITY_INTERNAL__IPHONE_5_0
#define __AVAILABILITY_INTERNAL__IPHONE_5_0 __AVAILABILITY_TOO_NEW
#endif
于 2013-05-27T06:18:01.220 回答
0

您始终可以在 4.3 模拟器上测试您的应用程序。选择iPhone 4.3 Simulator“方案”菜单下的 (您可以在 Xcode 顶部的“运行”“停止”按钮的右侧找到它)。如果你找不到 4.3 模拟器的选项,那么你需要去下载它Xcode->Preference->Downloads->Components->iOS 4.3 Simulator

有时 xcode 不会抱怨 6.1 中可用的新功能(如自动布局等)的使用,但在 4.3 上运行时会导致应用程序崩溃。

于 2013-05-27T05:42:14.230 回答