【问题标题】:How to return string array in objective c如何在目标c中返回字符串数组
【发布时间】:2015-08-01 11:10:33
【问题描述】:

我正在尝试从 Web 服务获取数据并将其添加到 nsmutablearray 中, 之后我想从外部 c 函数返回该数组.....

例如:

@implementation SampleClass

    -(NSMutableArray* ) createArray:
    {
    NSMutableArray *array=[NSMutableArray new];
    //
    //add value in array
    //

    return array;

    }


    @end


    extern 'C'
    {

    //how can i 

    NSArray* returnArray()// this method should return string array
    {
    SampleClass *sc=[[SampleClass alloc]init];
    NSMUtableArray* a=[NSMutableArray new];
    a=[sc createArray];
    return a
    }
}

@end

【问题讨论】:

    标签: objective-c arrays function return


    【解决方案1】:

    既然 Objective-C 是 C 的超集,为什么需要使用 extern "C"?您已经可以毫无问题地使用 C 代码了。

    对于您的问题,它取决于数组的生命周期。如果数组被保留,那么这就足够了:

    char *cString = [[array objectAtIndex:i] UTF8String];
    

    否则您需要为每个字符串分配一个新的char*,例如使用strdup

    char *cString = strdup([[array objectAtIndex:i] UTF8String]);
    

    请注意,后者将要求您在您不再需要 free(cString) 时释放内存。如果您需要返回一个 C 数组,那么您将在之前创建它并相应地设置值,例如

    char** cArray = calloc([array count], sizeof(char*));
    

    【讨论】:

    • 感谢您的回复,我正在尝试为 unity3d 创建插件,因为我需要 extern "C"... 使用这个 extern "C" 我在 c# 代码中访问它...所以我需要extern "C" 中的方法返回字符串数组...
    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    相关资源
    最近更新 更多