2015-05-06 160 views
3

我是一個初學者,請耐心等待。首先,是所有NS的東西(NSArray,NSString等)Objective-C的具體?客觀C-定義在C或客觀的C

此外,我很困惑在C或Objective-C中創建事物。你什麼時候使用其中一種?

例如,這情況下,我會使用以下:

NSArray *germanCars = @[@"Mercedes-Benz", @"BMW", @"Porsche", @"Opel", @"Volkswagen", @"Audi"]; 

或:

NSString *germanCars[] = {@"Mercedes-Benz", @"BMW", @"Porsche", @"Opel", @"Volkswagen", @"Audi"}; 

感謝

+0

絕對是第一個;後來當你開始意識到'NSArray'的可能性,並且你開始考慮複雜的模型層(包括永久存儲)時,你甚至不會考慮第二個作爲合理的選擇。 – holex

+0

是的,'NS'的東西幾乎是objc(或更好的Foundation/AppKit相關的,你通常會使用'NSArray's,所以你的第一次嘗試更適合Cocoa。 – HAS

+0

@HAS如果前綴NS的東西是objc ,上面的第二個片段如何使用NSString? – user1389811

回答

2

的NS東西從操作系統NeXTSTEP談到最初:http://en.wikipedia.org/wiki/NeXTSTEP

史蒂夫·喬布斯跑到旁邊,並帶來了東西交給蘋果,當他回到那裏。

使用Mac OS或iOS時,它是Cocoa框架的一部分。 Objective-C就是這些東西寫入的語言。

至於你的編碼問題,請使用第一個。你想盡可能地使用Cocoa構造。 Cocoa是一個成熟,設計良好的API,如果你用這種風格做事情,你會發現很多任務會更容易。

3

NS前綴的東西是特定於Cocoa框架,基金會和AppKit的。它們最初是爲Objective-C設計的,但如果它們具有綁定,則可以從其他語言訪問它們。最明顯的一個,這些天是斯威夫特,但他們也可以從使用Python PyObjC訪問等

在一般情況下,你應該更喜歡C風格類型的可可集合類(即NSArray)。他們更高級別,從而提供更好的抽象和功能。你只會爲需要它的API使用C風格的數組,這是相對罕見的。

+0

...和C++通過Objective-C++。 – trojanfoe

1

你的第一個例子是一個NSArray對象,它包含幾個NSString對象。你的第二個例子是一個普通的C數組,包含幾個NSString對象。

您會在Cocoa庫中發現接受C對象數組的很少的方法。 NSArray具有C數組不具備的大量有用功能。