2012-08-12 55 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. 
相關問題