0

这是情况。我在 xcode 4.2 中创建了一个项目,部署目标设置为 5.0。但我想向后兼容我的代码直到 4.0。现在我在 xcode 4.2 中没有 4.2 或 4.0 的模拟器,所以我在 xcode 4.0 中运行我的代码。这里我有两个错误:

  1. unknown "strong". I removed it by adding retain instead.
  2. unknown "@" in project, so I added below code in main.h 

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;

这是我们在ARC或iOS5之前的main.h中一般写的

现在我遇到的另一个问题是 main.h 被调用但 AppDelegate 没有被调用,即 aplicationDidFinishLaunching 从未被调用。然后我把上面的代码修改成这样

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass(AppDelegate.class));
[pool release];
return retVal;

现在,我没有遇到任何问题,构建成功,并且在两个版本的 xcode 中都被编译。我只是想知道为什么会发生这种情况,我可以继续我的项目在 xcode 4.2 中使用上述主要定义,因为这对我来说似乎并不好。

4

1 回答 1

0

试试这个。那应该回答你的问题。

基本上你需要首先瞄准iOS4,它应该适用于iOS5。问题是当你首先开始使用 iOS5 时,因为 iOS4 不知道新功能。这可能看起来很痛苦,但考虑是否有必要支持 iOS4,我们现在有 iOS6,iOS5 在所有版本中占多数......

于 2012-07-02T10:08:57.430 回答