OC方法详解
来源:互联网 发布:网络手机兼职是真的吗 编辑:程序博客网 时间:2024/05/29 13:38
//
// main.m
// OC方法详解
//
// Created by Goddog on 15/1/2.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
/*
1.方法类似于函数。
2.方法不能独立存在,所有方法必须定义在类里,要么属于类,要么属于对象
3.OC调用函数时的传参机制与调用方法的传参机制完全相同,都是值传递,都是传入参数的副本。如果是指针变量为参数,也是地址传递
4.如果一个方法用+标识,这个方法属于类,如果一个方法用-标识,这个方法属于类的实例。
5.OC方法不能独立存在,必须用[类方法]或[对象 方法]的形式调用。
6.形参个数可变的方法,在最后一个行参名后加“ ,...”如:-(void) test: (NSString*) name,...;
7.获取个数可变的形参:
(1)va_list:只是一个类型,用于定义指向可变参数列表的指针变量。
(2)va_start:这是一个函数,指向开始处理可变形参的列表,并让指针变量指向可变形参列表的第一个参数。
(3)va_end:结束处理可变形参,释放指针变量。
(4)va_arg:该函数返回获取指针当前指向的参数的值,并将指针移动到指向下一个参数。
*/
#import <Foundation/Foundation.h>@interface VarArgs : NSObject //定义形参个数可变的方法。 -(void) test:(NSString*) name,...;@end@implementation VarArgs-(void) test:(NSString *)name, ...{ //用va_list定义一个argList指针变量,该指针变量指向可变参数列表。 va_list argList; //如果第一个name参数存在,才需要处理后面的参数。 if(name) { //由于name参数并不在可变参数列表中,因此处理name参数。 NSLog(@"%@",name); //让argList指向第一个可变参数列表的第一个参数,开始提取可变参数列表的参数。 va_start(argList, name); //va_arg用于提取argList指针当前指向的参数,并将指针移动到指向下一个参数。 //arg变量用于保存当前获取的参数,如果参数不为空,则进入循环体中处理。 NSString* arg = va_arg(argList, id); while (arg) { //打印出每一个参数 NSLog(@"%@",arg); //再次提取下一个参数,并将指针移动到指向下一个参数 arg = va_arg(argList, id); } //释放argList指针,结束提取 va_end(argList); }}@endint main(int argc, const char * argv[]) { @autoreleasepool { //可变参数类似于数组的结构 VarArgs* varArgs = [[VarArgs alloc] init]; [varArgs test:@"JAVA",@"PHP",@"ANDROID",@"IOS",nil]; } return 0
0 0
- OC方法详解
- OC中的Dealloc方法详解
- 【Objective-C】OC中的Dealloc方法详解
- [Objective-C]OC中的Dealloc方法详解
- OC中对象方法的使用详解
- 【OC】OC description方法
- OC-方法
- Oc 正则表达式~详解 02 (方法名总结)
- OC之【NSDictionary详解】
- OC之NSString详解
- OC多态详解
- OC协议protocol详解
- OC构造函数详解
- iOS OC Label 详解
- OC之self详解
- OC内存管理详解
- OC内存管理详解
- OC内存管理详解
- codeforces #496D# Tennis Game(二分lower_bound)
- 九度OJ—题目1089:数字反转
- spring之ApplicationContext初探
- 产品经理之驱动开发
- 在go环境中架设protobuf
- OC方法详解
- 64位的ubuntu14.10系统下安装python2.7.9
- jdk集合源码之LinkedList
- 1012. The Best Rank (25)
- android listview 设置点击item背景颜色效果
- 树莓派架设http服务器挂载网页
- select、poll、epoll的比较
- day07_java面向对象+构造函数+this+static关键字
- linux suid,sgid,bit stick(粘贴位),acl权限的记录