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 开始编程。我是在五六种其他语言之后开始的,其中一部分仍然让我头疼。这是一种更好的第二或第三语言。

于 2013-08-13T16:38:00.453 回答
0

你在这两个方面都是对的。

NSAutoreleasePool is not available in automatic reference counting mode

这是因为您正在以不同的模式运行您的代码,然后他正在运行他的。自动引用计数(大约 2012 年)在您必须手动跟踪之前自动执行内存管理。两个可能的建议:

  • 不要使用 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;
    } 
    

我建议选择更新的教程或继续进行无弧项目。

对于关于未使用变量的第二个问题,XCode 告诉您您有自己制作但未使用的变量。如您所见,您创建strength了 et al 而没有使用它们。这不是一个问题。我假设您稍后需要在以下步骤中使用它们。

于 2013-08-13T16:42:26.637 回答