Objective-C - 对象作为方法的参数

来源:互联网 发布:laravel cms管理系统 编辑:程序博客网 时间:2024/04/28 03:57

Objective-C - 对象作为方法的参数:以人在遛狗为例

人遛狗,人拥有一个遛狗的方法,需要在遛狗的方法中传一条狗对象给人.

在人的对象方法中狗对象做为参数传递.


#import <Foundation/Foundation.h>


#pragma mark -

#pragma mark 狗类的声明实现

//声明

@interface YYDog : NSObject

{

@public

    NSString *_name;

    int _age;

    NSString *_color;

}


- (void)sayHi;

@end


//实现

@implementation YYDog


- (void)sayHi

{

    NSLog(@"哈喽!我是 %@ %@, 我今年%d岁了! ",_color, _name, _age);

}

@end


#pragma mark - 

#pragma mark 人类的声明和实现

//声明

@interface YYPerson : NSObject

{

@public

    NSString *_name;

    int _age;

    

}


- (void)eatWithFood:(NSString *)foodName;

- (void)liuGouWith:(YYDog *)dog;

@end


//实现

@implementation YYPerson


- (void)eatWithFood:(NSString *)foodName

{

    NSLog(@"今天的午饭%@真好吃啊! ", foodName);

}


- (void)liuGouWith:(YYDog *)dog

{

    NSLog(@"我在遛够,哈哈! ");

    dog-> _name = @"小白";

    [dog sayHi];

}

@end




int main(int argc,const char * argv[]) {

    

    //创建人对象

    YYPerson *xiaoxue = [YYPersonnew];

    xiaoxue->_name = @"小雪";

    xiaoxue->_age = 18;

    //创建狗对象

    YYDog *wangcai = [YYDognew];

    wangcai->_name = @"旺财";

    wangcai->_age = 3;

    wangcai->_color = @"黄色";

    //调用对象方法

    [xiaoxue eatWithFood:@"红烧鱼"];

    //对象作为参数的传递,传递的是地址,所以方法内部可以修改外界的狗对象的值.

    //旺财的名字在方法内部被修改成了小白

    [xiaoxue liuGouWith:wangcai];

    

    

    return 0;

}

1 0