c/c++语言开发共享的示例

我找不到方法的有效例子[NSDictionary getObjects:andKeys:] 。 我能找到的唯一例子 ,不编译。 我提供了错误/警告,以防有人搜索它们。

我感到困惑的原因是因为NSDictionary上的大多数方法都返回NSArray 。 但是,在文档中它声明此方法的out变量作为C数组返回。

以下是您按照链接示例可能获得的错误消息/警告:

 NSDictionary *myDictionary = ...; id objects[]; // Error: Array size missing in 'objects' id keys[]; // Error: Array size missing in 'keys' [myDictionary getObjects:&objects andKeys:&keys]; for (int i = 0; i < count; i++) { id obj = objects[i]; id key = keys[i]; } 

 NSDictionary *myDictionary = ...; NSInteger count = [myDictionary count]; id objects[count]; id keys[count]; [myDictionary getObjects:&objects andKeys:&keys]; // Warning: Passing argument 1 of 'getObjects:andKeys:' from incompatible pointer type. for (int i = 0; i < count; i++) { id obj = objects[i]; id key = keys[i]; } 

我将提供一个有效的解决方案作为这个问题的答案。

    以下是使用此方法的正确方法:

     NSDictionary *myDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"A", @"2", @"B", nil]; NSInteger count = [myDictionary count]; id objects[count]; id keys[count]; [myDictionary getObjects:objects andKeys:keys]; for (int i = 0; i < count; i++) { id obj = objects[i]; id key = keys[i]; NSLog(@"%@ -> %@", obj, key); } 

    在ARC下,解决方案需要修改如下(__unsafe_unretained添加到数组定义中):

    需要了解更多c/c++开发分享的示例,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

     NSDictionary *myDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"A", @"2", @"B", nil]; NSInteger count = [myDictionary count]; id __unsafe_unretained objects[count]; id __unsafe_unretained keys[count]; [myDictionary getObjects:objects andKeys:keys]; for (int i = 0; i < count; i++) { id obj = objects[i]; id key = keys[i]; NSLog(@"%@ -> %@", obj, key); } 

      以上就是c/c++开发分享的示例相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979505.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐