2015-05-06 107 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数组不具备的大量有用功能。