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
原创粉丝点击