gpt4 book ai didi

objective-c - 这两个main.m有什么区别?

转载 作者:行者123 更新时间:2023-11-28 19:18:14 27 4
gpt4 key购买 nike

我有点困惑,因为我有一个在其示例代码中使用 this 1st main.m 的类,而我的项目使用后者。我在使用我的 applicationDidFinishLaunching 将类实例化时遇到了很多麻烦,我认为这些不同的 main.m 文件可能是罪魁祸首。我的项目和示例项目之间的 .xib 文件与 Main Nib 名称的 .plist 设置相同。代表们都链接正确

#import <UIKit/UIKit.h>
#import "MidiTestingAppDelegate.h"

int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([MidiTestingAppDelegate class]));
}
}

#import <UIKit/UIKit.h>

int main(int argc, char *argv[])
{
#if __has_feature(objc_arc)
@autoreleasepool
{
int retVal = UIApplicationMain(argc, argv, nil, nil);
return retVal;
}
#else
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
#endif
}

我假设前者直接进入 App Delegate 而后者直接加载 UIApplication?对吗?

最佳答案

这里有很多不好的信息。

首先,假设你有最新版本的 Xcode,第一个版本就是你所需要的。

@autoreleasepool 语法在非 ARC 项目中工作。编译器会解决所有问题,并会在任何一种情况下生成适当的代码。

第二段代码使用特征检测宏 (__has_feature) 来决定新的 @autoreleasepool 语法和遗留的 NSAutoreleasePool 方法创建池,具体取决于是否启用了 ARC。如果您运行的是没有可用新语法的旧版 Xcode,则只需使用第二段代码。

关于objective-c - 这两个main.m有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10949705/

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