Objective-C中的C样式数组
从NSArray和NSMutableArray中获得了所有有用的东西,为什么要对Objective-C对象使用“C风格”数组Objective-C中的C样式数组,objective-c,c,arrays,Objective C,C,Arrays,从NSArray和NSMutableArray中获得了所有有用的东西,为什么要对Objective-C对象使用“C风格”数组 NSString *array[] = {@"dog", @"cat", @"boy"}; 一切有用的东西都是有代价的 是否尝试过制作ints的NSArray?你不能。您必须使用NSNumber 为什么??因为NSArray不知道如何处理它不知道如何管理内存的东西。。。唯一符合其内存管理要求的是基于NSObject的东西 这只是一个例子,但还有很多其他例子 底线是,任何
NSString *array[] = {@"dog", @"cat", @"boy"};
一切有用的东西都是有代价的 是否尝试过制作
ints
的NSArray
?你不能。您必须使用NSNumber
为什么??因为NSArray
不知道如何处理它不知道如何管理内存的东西。。。唯一符合其内存管理要求的是基于NSObject
的东西
这只是一个例子,但还有很多其他例子
底线是,任何事情都很少有一个“最佳”答案
NSArray也不例外。所有有用的东西都是有价格的
是否尝试过制作ints
的NSArray
?你不能。您必须使用NSNumber
为什么??因为NSArray
不知道如何处理它不知道如何管理内存的东西。。。唯一符合其内存管理要求的是基于NSObject
的东西
这只是一个例子,但还有很多其他例子
底线是,任何事情都很少有一个“最佳”答案NSArray
也不例外。简言之,固定数组可以提供一个简洁的初始化语法(如您所演示的)。在某些情况下,与使用NSArray相比,C样式的数组还可以提供性能优势。我想到的另一件事是,NSArray不提供任何对多维数组的内置支持,而多维C数组很容易实现
当然,您只能将对象存储在NSArray中,而不能存储在C基元类型中,但您特别询问了如何将C数组与Objective-C对象一起使用。简单地说,固定数组可以提供一种简洁的初始化语法(如您所演示的那样)。在某些情况下,与使用NSArray相比,C样式的数组还可以提供性能优势。我想到的另一件事是,NSArray不提供任何对多维数组的内置支持,而多维C数组很容易实现
当然,事实上,您只能在NSArray中存储对象,不能存储C基元类型,但您特别询问了如何将C数组与Objective-C对象一起使用。+1。性能上的好处是巨大的,因为编译器可以应用大量的优化,而这在使用NSArray
时是无法做到的,因为典型的objective-c特性,如类别和方法swizzling(理论上)可以改变NSArray
的行为。您还可以使用通常的c习惯用法sizeof(array)/sizeof吗(array[0])
获取计数?您是否可以使用sizeof(array)/sizeof([array class])
?+1。性能优势可能是巨大的,因为编译器可以应用大量优化,而这在使用NSArray
时是无法实现的,因为典型的objective-c特性,例如类别和方法旋转,这(理论上)是可能会改变NSArray的行为。您仍然可以使用常用的C语言sizeof(array)/sizeof(array[0])
来获取计数吗?您可以使用sizeof(array)/sizeof([array class])吗另外,OT是否有一个关于这个C标签问题的元讨论?我自己对C++和Obj-C问题的使用C标签很恼火。另外,是否有一个关于这个C标签问题的元讨论?我自己对C++和Obj-C问题的使用C标签相当愤怒。