Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将va_list作为参数传递给Objective-C中的方法时进行迭代

将va_list作为参数传递给Objective-C中的方法时进行迭代
EN

Stack Overflow用户
提问于 2013-04-22 06:56:27
回答 3查看 4.2K关注 0票数 3

我想将一个变量参数列表从一个方法(functionOne)传递给另一个方法(functionTwo)。一切都很好,除了我还不能弄清楚如何在functionTwo中设置va_list,以便我可以访问va_list中的第一个参数。使用va_arg前进到va_list中的第二个参数。谢谢。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)functionOne:(NSString *)configFiles, ... {
    va_list args;
    va_start(args, configFiles);
    [self functionTwo:args];
    va_end(args);
}

- (void)functionTwo:(va_list)files {
    NSString *file;
    while ((file = va_arg(configFiles, NSString *))) {
        ...
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-22 07:06:32

票数 3
EN

Stack Overflow用户

发布于 2013-04-22 07:58:35

参见Technical Q&A QA1405: Variable arguments in Objective-C methods

接受可变参数的

方法称为可变方法。

stdarg(3)手册页中描述的可变参数宏的工作方式与它们在普通函数中的工作方式相同。

下面是一个Objective-C类别的示例,其中包含一个可变方法,该方法将以nil结尾的参数列表中的所有对象附加到一个NSMutableArray实例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#import <Cocoa/Cocoa.h>

@interface NSMutableArray (variadicMethodExample)

// This method takes a nil-terminated list of objects.
- (void)appendObjects:(id)firstObject, ...;

@end

@implementation NSMutableArray (variadicMethodExample)

- (void)appendObjects:(id)firstObject, ... {
    id eachObject;
    va_list argumentList;
    if (firstObject) // The first argument isn't part of the varargs list,
        {                                   // so we'll handle it separately.
      [self addObject: firstObject];
      // Start scanning for arguments after firstObject.
      va_start(argumentList, firstObject);
      while (eachObject = va_arg(argumentList, id)) // As many times as we can get an argument of type "id"
      [self addObject: eachObject]; // that isn't nil, add it to self's contents.
      va_end(argumentList);
    }
}

@end
票数 2
EN

Stack Overflow用户

发布于 2014-06-19 17:27:55

我用于调试的解决方案如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-(void) debug:(NSString*)format, ... {

    if (level < MXMLogLevelDebug) return;

    if(format == nil) return;

    va_list args, args_copy;
    va_start(args, format);
    va_copy(args_copy, args);
    va_end(args);

    NSString *logString = [[NSString alloc] initWithFormat:format
                                                  arguments:args_copy];

    NSString *funcCaller = @"";
    NSArray *syms = [NSThread  callStackSymbols];
    if ([syms count] > 1) {
        funcCaller = [syms objectAtIndex:1];
    }
    NSString *logMessage = [NSString stringWithFormat:@"%@ DEBUG: %@", funcCaller, logString];

    NSLog(@"%@",logMessage);


}

这样做的副作用是,您必须在args上添加一个保护以确保不为空。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16141126

复制
相关文章
CodeXL编程分析工具
要想在异构计算上有所突破,良好的支持环境是必不可少的,NVIDIA就为其GPU通用计算开发了一套CUDA软件,AMD也要有相应的工具才行。 这个工具就是CodeXL。 CodeXL 工具套件为软件开发者和独立软件供应商(ISV)进入一个并行编程的新时代奠定基础,以发挥各种计算系统中AMD高性能CPU、GPU和APU的计算性能。CodeXL包含的新特性让开发者可以发掘AMD处理器的最大性能。包括GPU debugger(GPU调试器)、CPU profiler(CPU分析器)、GPU profi
GPUS Lady
2018/03/30
1.5K0
一些关于并行计算的科研思路
    最近想要找点新的点子来优化之前看到的一些立体匹配论文,我之前一直是用图割做立体匹配,刚开始时候用图割做图像分割,后来发现这块都被人做烂了,继续往下看发现图割还能搞立体匹配,效果也挺好。但是后面发现掉大坑里面了。
流川疯
2019/01/18
5320
在 .NET 应用程序中运行 JavaScript
前几天我在做一个副业,意识到我需要使用一些 JavaScript 功能。一想到要再次处理 Node.js 和 npm,我就完全放弃了,所以我决定研究一下在 .NET 应用程序中运行 JavaScript 的可能性。很疯狂吧?实际上,这出乎意料的简单。
独立观察员
2022/12/06
2.6K0
在 .NET 应用程序中运行 JavaScript
【分享】在MPSoC上运行基于eglfs_kms的QT应用程序
Xilinx为MPSoC支持4种libMali的backend: X11, Wayland/GBM, Fbdev, Headless-EGL.
hankfu
2020/12/16
5.8K0
开始在Kubernetes运行Python应用程序
你知道你想要在Kubernetes中运行应用程序,但不知道从哪里开始。或者你刚刚开始,但不知道自己不知道什么。在本博客中,你将了解如何封装应用程序,并使其在Kubernetes运行。
CNCF
2019/12/04
3.5K0
开始在Kubernetes运行Python应用程序
Qt中获取当前应用程序全路径
在Qt中获取应用程序全路径非常简单,直接使用`QCoreApplication::applicationDirPath()`这个静态函数就OK了,
ccf19881030
2021/05/30
3.4K0
Qt中获取当前应用程序全路径
Spark 在Yarn上运行Spark应用程序
在 YARN 中,每个应用程序实例都有一个 ApplicationMaster 进程,该进程是为该应用程序启动的第一个容器。应用程序负责从 ResourceManager 上请求资源。一旦分配了资源,应用程序将指示 NodeManagers 启动容器。ApplicationMasters 消除了对活跃客户端的依赖:启动应用程序的进程可以终止,并且从在集群上由 YARN 管理的进程继续协作运行。
smartsi
2019/08/07
1.9K0
在 WASI 上运行 .NET 7 应用程序
WASI代表 WebAssembly 系统接口,WASI 让沙盒化的 WebAssembly 应用程序通过一系列类似 POSIX 的函数访问底层操作系统,允许独立于浏览器运行 WebAssembly 代码。这是一个高度实验性的项目,但同时也是一个非常有趣的项目,并且有可能为行业的大规模编程范式转变做出贡献,使 WebAssembly 真正无处不在。
张善友
2022/04/28
1.4K0
在 WASI 上运行 .NET 7 应用程序
分享我用Qt开发的应用程序【二】在Qt应用程序中使用字体图标fontawesome
为了使用简单,需要先写一个单件类,头文件的代码如下: 其中静态方法Instance保证IconHelper的实例全局唯一 (注意构造函数已经私有化了) #ifndefICONHELPER_H #defineICONHELPER_H #include<QObject> #include<QMutex> #include<QMutexLocker> #include<QtGui> #include<QtWidgets> #include<qfont.h> classIconHelper:publicQObje
liulun
2018/01/12
1.8K0
分享我用Qt开发的应用程序【二】在Qt应用程序中使用字体图标fontawesome
讨论在 Linux Control Groups 中运行 Java 应用程序的暂停问题
本篇原文来自 LinkedIn 的 Zhenyun Zhuang,原文:Application Pauses When Running JVM Inside Linux Control Groups[1],在容器化的进程中,或多或少会给现有应用程序带来一些问题,这篇文章讲的是 LinkedIn 在使用 cgroups 构建容器化产品过程中,发现资源限制策略对 Java 应用程序性能会产生一些影响,文章深入分析问题根本原因,并给出解决方案。笔者看过后,觉得非常赞,因此翻译后献给大家,希望对大家有帮助。
涤生
2019/05/15
2.3K0
讨论在 Linux Control Groups 中运行 Java 应用程序的暂停问题
本篇原文来 LinkedIn 的 Zhenyun Zhuang,原文:Application Pauses When Running JVM Inside Linux Control Groups[1],在容器化的进程中,或多或少会给现有应用程序带来一些问题,这篇文章讲的是 LinkedIn 在使用 cgroups 构建容器化产品过程中,发现资源限制策略对 Java 应用程序性能会产生一些影响,文章深入分析问题根本原因,并给出解决方案。笔者看过后,觉得非常赞,因此翻译后献给大家,希望对大家有帮助。
涤生
2019/05/15
2.1K0
在QT中处理windows消息
http://blog.csdn.net/sryan/article/details/6744070
bear_fish
2018/09/20
2.6K0
在QT中处理windows消息
windows 任何应用程序在 运行 里直接打开
    很多时候电脑的桌面 应用 icon 很多了,不方便找到也比较浪费时间,还有 有些 应用 icon 也许不想放在桌面上,如果能用命令方式打开 应用 那该多好。
卓越笔记
2023/02/18
9200
windows 任何应用程序在 运行 里直接打开
opencl:c++接口(cl.hpp)利用cl::LocalSpaceArg设置__local 参数
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/51425981
10km
2019/05/25
1K0
opencl:c++接口(cl.hpp)利用cl::LocalSpaceArg设置__local 参数
在kubernetes中运行openebs
现在,OpenEBS是kubernetes下与容器原生和容器附加存储类型相关通用的领先开源项目之一。通过为每个工作负载指定专用的存储控制器,OpenEBS遵循容器附加存储或CAS的脚步。为了向用户提供更多功能,OpenEBS具有精细的存储策略和隔离功能, 可帮助用户根据工作负载选择存储。该项目不依赖Linux内核模块,而是在用户空间中运行。它属于Cloud Native Computing Foundation沙箱,在各种情况下都非常有用,例如在公共云中运行的群集, 在隔离环境中运行的无间隙群集以及本地群集。
有点技术
2020/07/13
4.8K0
在kubernetes中运行openebs
在 Kubernetes 中运行 Kubernetes
前面其实我们在 Windows 系统的 WSL2 下面使用 KinD 搭建了一套 Kubernetes 集群,KinD 是一个非常轻量级的 Kubernetes 安装工具,他将 Docker 容器当成 Kubernetes 的节点,使用非常方便。既然在 Docker 容器中可以运行 Kubernetes 集群,那么我们自然就会想到是否可以在 Pod 中来运行呢?在 Pod 中运行会遇到哪些问题呢?
我是阳明
2020/06/19
2.9K0
在 Kubernetes 中运行 Kubernetes
在 SCF 中运行 Puppeteer
Puppeteer 是一个 Node.js 库, 提供了一组封装良好的接口, 使你可以通过 DevTools 协议控制 Chrome. 本文介绍如何在 SCF 中使用 Puppeteer.
ritchiechen
2019/04/05
6.7K10
在 SCF 中运行 Puppeteer
在alpine中运行mysql
搬瓦工的1G内存,想要跑一个MySQL服务,动辄500M内存就没了,剩下一半的内存让我感觉很虚,于是想把是不是把MySQL塞进alpine镜像中看看,结果一搜,果然已经有大神这样做了,使用的是MariaDB,测试下来,同样跑一个博客只需要50M内存就OK,简直完美!
老高的技术博客
2022/12/28
3.7K0
Qt程序继承QApplication发生崩溃的原因
QApplication是Qt开发中经常用到的一个类,用来管理应用程序的生命周期。跟其相关的类还有QCoreApplication和QGuiApplication,分别用于不同场景下为应用程序的控制流和事件处理提供基础的框架。这三个类的构造函数都接收两个参数(分别是argc和argv),和C/C++程序的main函数的参数差不多。因此,大部分情况下我们是直接将main函数的这两个参数传给QApplication(这里以GUI程序为例):
24K纯开源
2019/07/02
2.4K0
在浏览器运行 Java Applet 小应用程序
老师布置了一个作业,让我们编写一个 Java Applet 程序,使之能在浏览器显示信息。
伪君子
2018/10/23
4.7K0
在浏览器运行 Java Applet 小应用程序

相似问题

clCreateContext期间CodeXL崩溃

17

CodeXL支持哪些GPU?

12

在CodeXL中构建glsl着色器

11

无法使用OpenCL调试CodeXL内核

14

CodeXL无法运行图形处理器配置文件

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文