2012-08-12 56 views
2

为什么我仍然允许使用函数并创建NSObject类中的对象,当我没有导入它时?为什么在不导入Foundation的情况下仍然可以正常工作?

int main (int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     NSLog(@"hi"); 
     NSArray *array = [NSArray arrayWithObject: @"hello"]; 
     NSLog(@"%@", array); 
    } 
    return 0; 
} 

输出

2012-08-11 22:15:33.854 prog[1282:403] hi 
2012-08-11 22:15:33.857 prog[1282:403] (
    hello 
) 

回答

8

最有可能你有一个进口基金会预编译/前缀头,所以基金被默认添加到每个头。寻找名为* -Prefix.pch的文件。 Xcode通常将其放在一个名为支持文件的组中。

0

我试图用命令行编译铿锵声,但我失败了。我认为Xcode可以帮助编译。

% cat main.m 

int main (int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     NSLog(@"hi"); 
     NSArray *array = [NSArray arrayWithObject: @"hello"]; 
     NSLog(@"%@", array); 
    } 
    return 0; 
} 

% clang main.m 

main.m:4:9: warning: implicit declaration of function 'NSLog' is invalid in C99 
     [-Wimplicit-function-declaration] 
     NSLog(@"hi"); 
     ^
main.m:5:9: error: use of undeclared identifier 'NSArray' 
     NSArray *array = [NSArray arrayWithObject: @"hello"]; 
     ^
main.m:5:18: error: use of undeclared identifier 'array' 
     NSArray *array = [NSArray arrayWithObject: @"hello"]; 
       ^
main.m:5:27: error: use of undeclared identifier 'NSArray' 
     NSArray *array = [NSArray arrayWithObject: @"hello"]; 
         ^
main.m:6:22: error: use of undeclared identifier 'array' 
     NSLog(@"%@", array); 
        ^
1 warning and 4 errors generated. 
相关问题