objective-c NSArray在线测试

时间:2014-09-06 08:00:01

标签: ios objective-c nsarray

我是Objective-c的新手,在进入iOS开发之前尝试学习该语言的基础知识。看起来Xcode需要更全面地了解整个iOS开发系统,所以我尝试使用http://www.compileonline.com/compile_objective-c_online.php这个网站进行简单的代码测试。

我不确定我在这里缺少什么,但我无法测试这个简单的字典代码(来自http://www.tutorialspoint.com/objective_c/objective_c_arrays.htm)。

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

   NSLog (@"hello world");
   [pool drain];

   NSDictionary *inventory = @{
      @"Mercedes-Benz SLK250" : [NSNumber numberWithInt:13],
      @"Mercedes-Benz E350" : [NSNumber numberWithInt:22],
   };
   // Values and keys as arguments
   inventory = [NSDictionary dictionaryWithObjectsAndKeys:
         [NSNumber numberWithInt:13], @"Mercedes-Benz SLK250",
         [NSNumber numberWithInt:22], @"Mercedes-Benz E350", nil];
   // Values and keys as arrays
   NSArray *models = @[@"Mercedes-Benz SLK250", @"Mercedes-Benz E350"];
   NSArray *stock = @[[NSNumber numberWithInt:13],
                   [NSNumber numberWithInt:22]];
   inventory = [NSDictionary dictionaryWithObjects:stock forKeys:models];
   NSLog(@"%@", inventory);


   return 0;
}

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

许多较新的Objective-C功能仅适用于Clang编译器 (由Xcode使用), 但没有gcc(由在线编译器使用)。例如"Objective-C Literals"

// NSDictionary literal @{ ... }
NSDictionary *inventory = @{
    @"Mercedes-Benz SLK250" : [NSNumber numberWithInt:13],
    @"Mercedes-Benz E350" : [NSNumber numberWithInt:22],
};

// NSArray literal @[ ... ]
NSArray *models = @[@"Mercedes-Benz SLK250", @"Mercedes-Benz E350"];

不被gcc理解。

如果您将代码限制为&#34;旧式&#34;语法

int main (int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSDictionary *inventory = [NSDictionary dictionaryWithObjectsAndKeys:
        [NSNumber numberWithInt:13], @"Mercedes-Benz SLK250",
        [NSNumber numberWithInt:22], @"Mercedes-Benz E350", nil];
    NSLog(@"%@", inventory);
    [pool drain];
    return 0;
}

然后它将在http://www.compileonline.com/compile_objective-c_online.php上按预期编译并运行。

但请注意,gcc不支持许多较新的Objective-C功能,最值得注意的是 ARC (automatic reference counting)。所以如果你想学习这门语言,Xcode就是 目前最好的开发环境。