Apple为数组文字和字典文字引入了一种新语法:
NSArray* literalArray = @[@"1", @"2", @"3"];
//Dictionary Literal
NSDictionary* literalDictionary = @{@1:@"first", @2:@"Second", @3:@"Third"};
它们的行为不像String文字。我的问题是他们没有引入类似于NSCFConstantString的NSCFConstantArray类的原因是什么? 除了向后兼容性之外,引入新类会有什么缺点?
答案 0 :(得分:3)
这可能已经实施,但它可能不会非常有用。为此,数组或字典中的所有内容都必须是编译时常量。这将是相当有限的 - 没有任何其他更改,您只能创建只包含字符串的数组和字典。数字文字也不是编译时常量。当然,这些也可以作为编译时常量实现。
但这整件事情并不是很有用。大多数情况下,您使用这些文字将一些仅在运行时已知的值放入数组或字典中。实现所有这些可能不值得经历所有麻烦。
答案 1 :(得分:0)
这需要将特定基础类的其他“不适当”知识引入编译器,将其与Apple的框架更紧密地联系起来,而不是作为通用编译器。
例如,它可能会干扰使用GNUStep编译器而不是Cocoa。
与NSString
的集成是长期存在的,现在无法删除,但添加更多此类集成必须有一个真正令人信服的参数。