我是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;
}
非常感谢任何帮助。谢谢!
答案 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就是 目前最好的开发环境。