IOS之学习笔记六(可变形参)

1、实现函数的可变形参

 

1)、va_list:这是一个可变类型,用于定义指向可变参数列表的指针变量

2)、va_start:让argList指向一个可变参数列表的第一个参数

3)、提取argList当前指针指向的参数,并且将指针指向下一个参数

4)、释放argList指针,结束提取

 

 

 


2、测试代码

Args.h

#ifndef Args_h
#define Args_h
#import <Foundation/Foundation.h>
@interface Args : NSObject
-(void)test:(id)name, ...;
@end
#endif /* Args_h */

Args.m

#import <Foundation/Foundation.h>
#import "Args.h"@implementation Args
-(void)test:(id)name, ...
{//va_list:这是一个可变类型,用于定义指向可变参数列表的指针变量va_list argList;if (name){NSLog(@"%@", name);//va_start:让argList指向一个可变参数列表的第一个参数va_start(argList, name);//提取argList当前指针指向的参数,并且将指针指向下一个参数NSString *arg = va_arg(argList, id);while (arg){NSLog(@"%@", arg);arg = va_arg(argList, id);}//释放argList指针,结束提取va_end(argList);}
}
@end


 

main.m

#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "Person.h"
#import "Apple.h"
#import "User.h"
#import "Args.h"
#import "KVCPerson.h"int main(int argc, char * argv[]) {@autoreleasepool {Args *arg = [Args new];[arg test:@"chenyu", @"chenxuan", @"chencaifeng", nil];}
}

 

 

 

3、运行结果

chenyu
chenxuan
chencaifeng

 

 

 

 

4、对比总结

这个oc里面和c语言里面的实现差不多如下面的代码

#include <stdio.h>
#include <stdarg.h>void PrintLines(char *first,...)
{char *str;va_list v1;str = first;va_start(v1,first);do {printf("%s\n",str);str=va_arg(v1,char*);} while (str != NULL );va_end(v1);
}int main(int argc, char* argv[])
{PrintLines("First1","Second2","Third3","Fourth4",NULL);return 0;
}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Javascript:原型模式类继承

原型模式每个函数&#xff08;准确说不是类、对象&#xff09;都有一个prototype属性&#xff0c;这个属性是一个指针&#xff0c;指向一个对象。使用原型对象的好处是可以让所有对象实例共享它包含的属性和方法。1.原型对象&#xff08;1&#xff09;当创建一个新函数&#xf…

C# 学习经验分享

NET 20 周年的学习挑战赛刚结束了第⼀阶段&#xff0c;不知道各位⼩伙伴参加了没有&#xff1f;有⼈问现在学习 C# 是不是有点过时&#xff1f;也有⼈问现在C# 能做什么&#xff1f;更有⼈问学习 C# 能否找到⼯作 &#xff1f;或者你从不同的专家&#xff0c;不同的从业者可以有…

ARM再出手,软银攀登新高山

当下秋意渐浓&#xff0c;那场贯穿整个夏季&#xff0c;引起舆论热潮的软银收购英国芯片巨头ARM案&#xff0c;总算于本月初尘埃落定。 然而时过未半月&#xff0c;易主后的ARM 9月20日宣布推出最新处理器Cortex-R52&#xff0c;官方强调这款具备先进安全特性的实时处理器将主要…

有限服务器延时计算_机房设备功率统计,UPS不间断电源和蓄电池的计算选择

当然了&#xff0c;也可以不用这么麻烦&#xff0c;网上有UPS计算器的&#xff0c;输入条件直接求个结果就行了。弱电笔记&#xff5c;弱电&#xff08;安防&#xff09;计算器诺&#xff0c;就上面那个&#xff01;下面进入正文&#xff1a;一个计算机机房有4台PC机&#xff0…

linux把2块盘挂到一个分区,linux系统如何挂载第二块硬盘

云主机有两块硬盘&#xff0c;第一块硬盘盘一般为10G&#xff0c;用于安装系统&#xff0c;第二块磁盘根据云主机类型不同&#xff0c;大小也不相同。我们建议您在使用的时候第二块硬盘作为数据盘&#xff0c;存放你的网站数据&#xff0c;这样在您恢复系统的时候&#xff0c;数…

JavaScript:改变li前缀图片和样式

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"> <title>无标题文档…

Visual Studio/SQL Server系统开发常见问题归纳

问题1.在利用C Sharp(操作系统为Windows7 64位)将Excel数据导入到SQL Server 2005中时,出现如下提示: 解决办法:VS菜单栏 生成→“配置管理器→平台→新建→x86。

IOS学习笔记七之KVC和Key路径

1、KVC介绍 1&#xff09;、KVC是由NSKeyValueCoding协议提供支持最基本的属性和两个方法如下 setValue:属性值 forkey:属性名&#xff1a;为指定属性设置值 valueForKey:属性名 &#xff08;得到或者指定属性的值&#xff09; 2&#xff09;、当设置value为nil的时候&am…

Xamarin效果第十八篇之GIS中复合型Mark

在前面一篇文章中简单在GIS上添加了最基础的Mark,今天再次分享一下早几天摸索的复合型Mark;啥也不说了都在效果里:1、关于数据我就是直接抓的高德的(至于后面需要的参数那就自行抓):https://restapi.amap.com/v3/airquality/aqilist?2、至于Mark无非就是用了CompositeSymbol:C…

Cent OS yum 安装 Adobe flash player

Cent OS yum 安装 Adobe flash player 桌面打开浏览器访问&#xff1a;http://get.adobe.com/cn/flashplayer/。网页会判断操作系统和浏览器并下载 Flash Player&#xff08;支持Firefox浏览器&#xff09;。 或者直接下载&#xff1a; i386系统 wget http://linuxdownload.ado…

WPF定时刷新UI界面

代码&#xff1a; using NHibernate.Criterion; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data; using System.Linq; using System.Text; using System.Threading; using System.Wi…

找不到libmmd.dll无法继续执行代码_300 行代码带你秒懂 Java 多线程!| 原力计划...

作者 | 永远在路上【】责编 | 胡巍巍出品 | CSDN博客线程线程的概念&#xff0c;百度是这样解释的&#xff1a;线程(英语&#xff1a;Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的…

《C prime plus (第五版)》 ---第11章 字符串和字符串函数---4

字符串的例子&#xff1a; 1.字符串排序&#xff1a; 应用范围&#xff1a;准备花名册&#xff0c;建立索引以及很多情况下都会用刀字符串的排序。这个程序的主要工具就是strcmp(). 算法&#xff1a;读一个字符串数组&#xff0c;对它们进行排序并输出。 #include<stdio.h&g…

linux系统中scanf函数,Linux下scanf宽度控制问题

scanf在不同编译器上传参顺序不一样&#xff0c;大部分都自右向左 &#xff0c;但有些编译器我无法找到规律scanf("%3c%2c",&ch1,&ch2);printf("%c,%c",ch1,ch2);以上两句执行输入&#xff1a;abcde在VC&#xff0c;TC 这两个编译器上都能正常输出…

SQL Server 编写自动增长的字符串型主键

1、编写标量值函数ICONVERT2STRING CREATE FUNCTION ICONVERT2STRING(@N INT,@F INT) RETURNS VARCHAR(10) AS BEGIN DECLARE @M INT DECLARE @L0 INT DECLARE @CH VARCHAR(10) DECLARE @ST VARCHAR(20) SELECT @CH= SELECT @ST=CONVERT(VARCHAR(10),@N) SELECT @ST=RTRIM(@ST)…

XElement 和 XDocument 到底有什么区别?

咨询区 Rana请问在xml操作中&#xff0c;XElement 和 XDocument 到底有什么区别&#xff1f;回答区 nawfal微软官方文档&#xff1a;https://msdn.microsoft.com/en-us/library/bb675196.aspx 上说的特别清楚&#xff0c;假定你有这样一个 test.xml 文件。<Root><Chil…

IOS学习笔记八(KVO)

1、KVO介绍 KVO机制NSKeyValueObserving协议支持&#xff0c;NS遵循了这个协议 &#xff0c;所以NSObject的子类都可使用协议中的方法&#xff0c;下面方法可以注册监听 添加监听器 addObserver: forKeyPath: options: context: 删除监听 removeObserver: forKeyPath: //重…

苹果、联想及华硕均看准美国电脑运输的增长

据国外媒体雅虎金融报道&#xff0c;根据国际数据公司的研究&#xff0c;美国个人电脑在4Q14中下跌至1820万台&#xff0c;在4Q15中下跌至1740万台&#xff0c;跌幅4.3%。而苹果、联想和华硕的产品出货量却呈现上市趋势。苹果出货量上升8.9%&#xff0c;至220万台&#xff0c;华…

CentOS下为Web网站性能做测试

CentOS下为Web网站性能做测试时间:2014-12-08 01:33来源:loosky.net 作者:自由的风 举报 点击:429次Webbench是知名的网站压力方面的测试工具&#xff0c;它是由Lionbridge公司开发。官方主页&#xff1a;http://home.tiscali.cz/~cz210552/webbench.html在运维工作中&#…

如何升级浏览器_前谷歌员工爆料:谷歌工程师们是如何合谋“杀死”IE6浏览器的...

浏览器在互联网中的地位可见一斑&#xff0c;甚至可以说&#xff0c;它是比搜索引擎和社交软件更强的流量入口。微软IE6当年在2001年作为Windows XP的默认浏览器发布&#xff0c;比Chrome首次发布还要早六年。 但是&#xff0c;谷歌Chrome却后来居上&#xff0c;如今的市场份额…