OC 02 方法

来源:互联网 发布:nginx sub filter 编辑:程序博客网 时间:2024/06/04 19:57

OC 02 方法           2016.08.10 

oc的方法分为:+ 和 - 方法

    - 实例方法

    1.方法的调用

    [实例化对象 方法名];

    2.方法书写

    1) - (返回值类型)方法名;

    2) - (返回值类型)方法名:(参数类型)参数名;

    3) - (返回值类型)方法名参数描述1:(参数类型)参数名1

Person.m文件中:

- (instancetype)init

{

    self = [superinit];

    if (self) {

        _name = @"coco";

        _age  = 22;

    }

    return self;

}

主函数中:

//1.无返回值,无参数

        Person *person = [[Personalloc]init];

       [person sayHi];

 

- (返回值)方法名参数描述名:(参数类型)参数名;

Person.m文件中:

- (void)lentMoney:(NSInteger)money

{

    NSLog(@"你借给我%ld$",money);

}

主函数中:

//2.无返回值,有参数

[person lentMoney:100];

 

-(返回值)方法名参数描述名1:(参数类型)参数名 参数描述名2:(参数类型)参数名;

Person.m文件中:

- (NSInteger)lentMoney1:(NSInteger)money

{

    NSLog(@"你借给我%ld$",money);

    return money;

}

-(NSInteger)sumOfNumber1:(NSInteger)number1 number2:(NSInteger)number2

{

    return number1 + number2;

}

主函数中:

//3.有返回值,有参数

       NSInteger money = [person lentMoney1:100];

       NSLog(@"money = %ld",money);

       NSInteger sum = [person sumOfNumber1:3 number2:6];

        NSLog(@"sum = %ld",sum);

     调用方式:[对象名 方法名];

    

 + 类方法

  1.方法调用

   [类名方法名];

  2.方法书写(基本和实例方法一样,只是改了符号)

    + (类名)方法名

    + (类名)方法名:(参数类型)参数名

Person.m文件中:

+ (void)sayHello

{

    NSLog(@"你好");

}

主函数中:

[Person sayHello];

     调用方式:[类名 方法];

 

便利构造方法(调用时候简单,所有的在.m文件里做好了(用加法方法))

Person.m文件中:

+ (Person *)person

{

    Person *person = [[Personalloc]init];

    return person;

}

 

+(Person *)personWithName:(NSString *)name age:(NSInteger)age

{

    Person *person = [[Personalloc]initWithName:nameage:age];

    return  person;

}

主函数中:

Person *per = [Personperson];

        NSLog(@"%@",per);

Person *per1 = [PersonpersonWithName:@"kiki"age:22];

        NSLog(@"%@",per1);

 

重点看NSString stringWithFormat

Person.m文件中:

- (NSString *)drinkTea:(NSString *)tea water:(NSString *)water

{

    NSString *string = [NSStringstringWithFormat:@"我想喝%@泡的%@",water,tea];

    return string;

}

主函数中:

NSString *drink = [person drinkTea:@"龙井" water:@"农夫山泉"];

        NSLog(@"%@",drink);

 

setter,gettter提供点语法

Person.m文件中:

- (void)setName:(NSString *)name

{

    _name = name;

}

- (NSString *)name

{

    return _name;

}

- (void)setAge:(NSInteger)age

{

    _age = age;

}

- (NSInteger)age

{

    return _age;

}

主函数中:

     //两个点语法都是在调方法

     per.name = @"yy";   // [persetName:@"yy"];

      

        NSLog(@"name = %@",per.name);//[pername]

       

        per.age = 20;

       

        NSLog(@"age = %ld",per.age);

 

description方法

   (1) 子类可以重写父类方法,NSObject有一个方法为descrption

   (2) 该方法返回NSString,用于描述该对象- 当使用NSLog(@”%@“,对象)时,会默认调用该对象的description方

   (3) 如果我们不重写此方法会默认调用NSObject的该方法,返回形如:<类名:地址>的

   (4)子类中重写该方法可以返回自定义对象信息

   //该方法无需手动调用(解决打印对象是地址的情况)

重写description

- (NSString *)description{

    NSString *string = [NSStringstringWithFormat:@"name = %@ age = %ld",_name,_age];

    return string;

}     

 

比较年龄大小

- (NSInteger)compareAgeOfPerson:(Person *)person{   

    return  self.age - person.age;

}

0 0