2013-04-07 37 views
0

我只是學習obj c。我使用從gnustep.org/experience/Windows.html下載的GNUStep(有3個安裝程序--MSYS系統,核心,開發)。客觀c字典枚舉與塊不能用gnustep gcc

運行下面的代碼:

#import <Foundation/Foundation.h> 

int main (int argc, char *argv[]) { 

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    NSDictionary *m_Dict = 
    [NSDictionary dictionaryWithObjectsAndKeys: 
     @"ABC", @"One", 
     @"DEF", @"Two", 
     @"GHI", @"Three", 
     nil ]; 

    // Print all key-value pairs from the dictionary 

    [m_Dict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) { 
     NSLog(@"%@ => %@", key, obj); 
     }]; 

    [pool drain]; 
    return 0; 
} 

是否顯示錯誤:

$ gcc -o c c.m -I /GNUstep/System/Library/Headers -L /GNUstep/System/Library/Li 
``braries -lobjc -lgnustep-base -fconstant-string-class=NSConstantString 
c.m: In function 'main': 
c.m:16:44: error: expected expression before '^' token 
c.m:18:1: warning: 'NSDictionary' may not respond to '-enumerateKeysAndObjectsUs 
ingBlock:' [enabled by default] 
c.m:18:1: warning: (Messages without a matching method signature [enabled by def 
ault] 
c.m:18:1: warning: will be assumed to return 'id' and accept [enabled by default 
] 
c.m:18:1: warning: '...' as arguments.) [enabled by default]c 

請建議我在做什麼錯。在這裏也搜索了Stackoverflow,但找不到太多幫助。

+2

你正在使用什麼編譯器+運行庫? – 2013-04-07 03:15:46

+1

你需要Clang。不要使用GCC。並且確保你安裝了正確的運行時版本,並且當你不知道你實際正在做什麼時,請使用GNUstep-make構建項目。 – 2013-04-07 05:46:26

+0

我只是在學習obj c。我使用從http://www.gnustep.org/experience/Windows.html下載的GNUStep(有3個安裝程序--msys系統,core,devel)。 – user2253619 2013-04-07 08:31:57

回答

0

您的編譯器不支持塊。您需要使用現代clang

真的,如果您正在爲Mac或iPhone/iPad編寫代碼學習Objective-C,您的第一步需要購買Mac並安裝Xcode。如果您學習使用較老的編譯器,您將錯過語言功能,您需要重新學習稍後使用的模式。

在購買Mac之前查看Mountain Lion的要求。您可以在技術上運行Lion上的最新Xcode,但我認爲Apple不會長期保持兼容。另外,如果你只是想學習Objective-C,你需要弄清楚你可以使用哪種語言的子組。不過,我認爲這在iOS/Mac開發之外並不是非常有用。

+0

而且似乎Windows上的CLANG + LLVM + ObjC運行時沒有被主動維護。 – 2013-04-07 15:52:31

+0

即使有人想嘗試,它也會很少使用,以至於不可靠。 Objective-C在OSX/iOS之外沒有用處。 – 2013-04-07 22:49:05

+0

我喜歡在Mac上使用XCode,但是我在Linux上嘗試在Objective-C上使用GnuStep和GCC並沒有什麼樂趣,我想在Windows上有更加尖銳的鋸齒狀邊緣,其中GnuStep和Objective-C是最不知道和最少使用。 – 2013-04-07 23:01:44