1

私はプログラミングを始めたばかりで、現在 Ray Wenderlich の初心者向けチュートリアルを進めようとしていますが、最初のハードルで落ちてしまいました! プログラムを間違ってセットアップしたか、プログラムを開始したときに異なるコードがあり、彼が生成したコードを実行しようとするとエラーが発生したため、チュートリアルが古くなっているようです。

彼のコード

// //  main.m //  Are You A WIZARD? //
#import <Foundation/Foundation.h>   int main (int argc, const char * argv[]) {

     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

     //These are the different variables that will be evaluated to generate responses. 
     float strength, intelligence, speed, alchemy_skill, sum, avg;

     //I included (1-10) so that users would know how to answer.
     NSLog(@"What is your strength (1-10)?");
     NSLog(@"What is your intelligence (1-10)?");
     NSLog(@"What is your speed (1-10)?");
     NSLog(@"What is your alchemy skill level (1-10)?");

     [pool drain];
     return 0; }

私のコード

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //These are the different variables that will be evaluated to generate responses:
        float strength, intelligence, speed, alchemy_skill, sum, avg;

        //I included (1-10) so that users would know how to answer.
        NSLog(@"What is your strength (1-10)?");
        NSLog(@"What is your intelligence (1-10)?");
        NSLog(@"What is your speed (1-10)?");
        NSLog(@"What is your alchemy skill level (1-10)?");

    }
    return 0; }

彼のコードを実行すると、「NSAutoreleasePool は自動参照カウント モードでは使用できません」などの完全なエラーが発生し、私のコードを実行すると、「未使用の変数」があると表示されます。

助けてくれてありがとう!私はすぐにばかげた間違いを犯したと確信していますが、いくつかの説明をいただければ幸いです。

4

2 に答える 2

2

unused variables次の行が原因で警告が表示されます。

float strength, intelligence, speed, alchemy_skill, sum, avg;

ここで 6 つの変数を宣言し、それらについては何もしません。通常は問題があるため、コンパイラはこれについて警告しますが、後で使用する場合は問題ありません。

彼のコードは時代遅れであり、さらに複雑な問題に対する複雑な解決策である ARC と呼ばれるものが作成される前に作成されました。

コメントで@Mardinに同意します。Obj C でプログラミングを始めないでください。他の 5 つまたは 6 つの言語から始めましたが、その一部は今でも頭痛の種です。それはより良い第二言語または第三言語です。

于 2013-08-13T16:38:00.453 に答える
0

あなたは両方の点で正しいです。

NSAutoreleasePool is not available in automatic reference counting mode

これは、あなたが別のモードでコードを実行していて、彼が彼のコードを実行しているためです。自動参照カウント (2012 年頃) は、メモリ管理を自動的に行いますが、以前は手動で追跡する必要がありました。考えられる 2 つの推奨事項:

  • ARC を使用しないでください。その後、彼のコードはすぐに機能します。

これを行うには、新しいプロジェクトを開始し、構成段階で「自動参照カウントを使用する」のチェックを外します。

  • 自動解放コードを削除します。

    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[]) {
    
        //These are the different variables that will be evaluated to generate responses:
        float strength, intelligence, speed, alchemy_skill, sum, avg;
    
        //I included (1-10) so that users would know how to answer.
        NSLog(@"What is your strength (1-10)?");
        NSLog(@"What is your intelligence (1-10)?");
        NSLog(@"What is your speed (1-10)?");
        NSLog(@"What is your alchemy skill level (1-10)?");
        return 0;
    } 
    

より最新のチュートリアルを選択するか、アークのないプロジェクトを続行することをお勧めします。

未使用の変数に関する 2 番目の質問に対して、XCode は、作成したものの使用していない変数があることを示しています。ご覧のとおり、strengthet al を作成し、それらを使用しません。問題じゃない。後で次の手順でそれらを使用する必要があると思います。

于 2013-08-13T16:42:26.637 に答える