objective-c - 如何将 C 风格的 char* 数组转换为 NSArray?

标签 objective-c cocoa

a.H:

-(NSArray *) returnarray:(int) aa
{
  unsigned char arry[1000]={"aa","vv","cc","cc","dd"......};
  NSArray *tmpary=arry;
  return tmpary;
}

交流电:

#include "a.H"
main (){
  // how do I call returnarray function to get that array in main class
}

我需要在 main 中使用该数组,并且我需要在单独的类中保留该数组函数。

有人可以提供代码示例来执行此操作吗?

最佳答案

这些行:

unsigned char arry[1000]={"aa", "vv", "cc", "cc", "dd", ...};
NSArray *tmpary=arry;

应该改为:

unsigned char arry[1000]={"aa", "vv", "cc", "cc", "dd", ...};
NSMutableArray * tmpary = [[NSMutableArray alloc] initWithCapacity: 1000];
for (i = 0; i < 1000; i++)
{
    [tmpary addObject: [NSString stringWithCString: arry[i] encoding:NSASCIIStringEncoding]];
}

这是因为 C 风格的数组(例如 int arr[10];)与上面声明的实际 NSArray 对象不同。

事实上,除了文档中定义的可供您使用的方法之外,人们不知道 NSArray 到底是什么。这与 C 风格的数组形成对比,C 风格的数组保证只是为您准备的连续内存块,大到足以容纳您请求的元素数量。

关于objective-c - 如何将 C 风格的 char* 数组转换为 NSArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8708274/

相关文章:

iphone - Objective-C:在 iPhone 上访问 REST API 的最佳方式

iphone - 如何检查设备的方向?

ios - 您如何对 UITextfield 进行编程,使其只允许保留一位小数? iOS

cocoa - 覆盖而不是写入 plist-cocoa

objective-c - 我应该在 ObjC 的头文件中定义重载的继承方法吗?

cocoa - NSStackView 将 NSView 放置在基线上

iPhone - 在应用程序处于后台时播放闹钟声音

objective-c - 更改 NSOpenPanel 按钮文本

objective-c - NSOutlineView 更改组行颜色

objective-c - NSSound 无法正常工作