Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C中的C样式数组_Objective C_C_Arrays - Fatal编程技术网

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的东西 这只是一个例子,但还有很多其他例子 底线是,任何

从NSArray和NSMutableArray中获得了所有有用的东西,为什么要对Objective-C对象使用“C风格”数组

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标签相当愤怒。