Obj-C:"Fairfield"和@"Fairfield"之间的区别(带字符串)?

Jef*_*ang 0 iphone objective-c nsstring

我的iPhone应用程序中只有一个非常糟糕的拼写错误,在这里回答.

现在我想知道@"......"符号.

为什么这样有效:

NSArray *someArray = [NSArray arrayWithObjects: @"Fairfield", nil];
Run Code Online (Sandbox Code Playgroud)

这没有(即使它编译,它将抛出一个EXC_BAD_ACCESS):

NSArray *someArray = [NSArray arrayWithObjects: "@Fairfield", nil];
Run Code Online (Sandbox Code Playgroud)

编辑:

好吧,所以你们已经指出我不能将一个C字符串添加到NSArray中,因为它显然不是一个对象.

现在另一个问题:这不是一种疏忽吗?我的意思是,为什么"... WithObjects:"消息指定(id)而不是(NSObject*)的列表?

Wev*_*vah 10

"@Fairfield"是一个普通的C字符串,其中包含一个"@"字符.@"Fairfield"是一个Objective-C字符串(NSString在OS X上),其中没有文字"@".

您不能将C字符串添加到Cocoa集合.