私は「Objective-Cでのプログラミング」に従っています3rd エディションと私は最初の例で問題が発生しています。
このエラーが発生し続けます:
セマンティック問題:「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;
}
どんな洞察も大歓迎です。
コンパイラーは、ARC(自動参照カウント)を有効にしてファイルをコンパイルするよう求められています。それをオフにするか、もっと良いことにあなたの例を近代化してください:
int main (int argc, const char * argv[]) {
@autoreleasepool {
NSLog (@"Programming is fun!");
}
return 0;
}
(いいえ、具体的には、ARCをオフにする方法を説明できません。それが前述のNDAのためにダウンするルートだった場合)
まだ見ている場合に備えてクイック投稿
ビルド設定でARCを無効にできます。
私の場合、ARCをオンにして、サンプルプロジェクトを更新して適切に動作させたいと思っていました。 AppleのNSAutoReleasePoolドキュメントは技術的には正しいものですが、すぐに出てこれを説明しないでください。方法は次のとおりです。
アプリケーションをメインにすると、おそらく次のようになります。
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([DemoAppDelegate class]));
[pool release];
return retVal;
}
それを次のように変更します。
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([DemoAppDelegate class]));
}
}