Gre*_*reg 29 objective-c nsautoreleasepool
我下面3"在Objective-C编程" RD版和我有第一个例子中的问题.
我一直收到这个错误:
语义问题:'NSAutoreleasePool'不可用:在自动引用计数模式下不可用
这是我的代码:
//
// main.m
// prog1 //
// Created by Steve Kochan on 1/30/11.
// Copyright 2011 ClassroomM, Inc.. All rights reserved. //
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog (@"Programming is fun!");
[pool drain];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
任何见解将不胜感激.
bbu*_*bum 39
要求编译器在启用ARC(自动引用计数)的情况下编译文件.关闭它,或者更好地使你的例子现代化:
int main (int argc, const char * argv[]) {
@autoreleasepool {
NSLog (@"Programming is fun!");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
(不,我不能告诉你如何关闭ARC,如果这是你因为上述NDA而失败的路线.)
Jas*_*ers 16
快速发布,以防您仍在寻找
您可以在构建设置中禁用ARC.
在我的情况下,我想要ARC,并希望更新示例项目以正常工作.Apple的NSAutoReleasePool文档在技术上是正确的,但不要直接解释这一点.这是如何做:
拿你的应用程序main,这可能看起来像这样:
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([DemoAppDelegate class]));
[pool release];
return retVal;
}
Run Code Online (Sandbox Code Playgroud)
并将其更改为如下所示:
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([DemoAppDelegate class]));
}
}
Run Code Online (Sandbox Code Playgroud)