59,对象作为方法参数传递

#import

/*

 #pragma mark起到标记的作用

 */


//#pragma mark 弹夹

//#pragma mark -

#pragma mark - 弹夹

@interface Clip : NSObject

{

    @public

    int _bullet;

}


-(void)addButtet;


@end


@implementation Clip


-(void)addButtet{

    _bullet = 10;

}


@end



//#pragma mark

//#pragma mark -

#pragma mark -

@interface Gun : NSObject

{

    @public

    Clip *_clip;

}


-(void)shoot:(Clip *)name;


@end


@implementation Gun


-(void)shoot:(Clip *)clip{

    if(clip->_bullet > 0){

        clip->_bullet--;

        NSLog(@"打了一枪,剩下%i颗子弹!",clip->_bullet);

    }else{

        NSLog(@"重新上子弹!");

    }

}


@end



//#pragma mark 士兵

//#pragma mark -

#pragma mark - 士兵

@interface Person : NSObject

{

    @public

    NSString *_name;

}


-(void)fire:(Gun *) gun : (Clip *)clip;


@end


@implementation Person


-(void)fire:(Gun *)gun :(Clip *) clip{

    if (gun != nil && clip != nil) {

        [gun shoot:clip];

    }

}


@end



//#pragma mark 主方法

//#pragma mark -

#pragma mark - 主方法

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

    @autoreleasepool {

        Person *person = [Person new];

        person->_name = @"ljs";

        Clip *clip = [Clip new];

        [clip addButtet];

        Gun *gun = [Gun new];

        gun->_clip = clip;

        [person fire:gun :clip];

        [person fire:gun :clip];

        [person fire:gun :clip];

    }

    return 0;

}

//2015-12-05 22:22:43.200 3,对象作为方法参数传递[1964:284273] 打了一枪,剩下9颗子弹!

//2015-12-05 22:22:43.201 3,对象作为方法参数传递[1964:284273] 打了一枪,剩下8颗子弹!

//2015-12-05 22:22:43.201 3,对象作为方法参数传递[1964:284273] 打了一枪,剩下7颗子弹!

//Program ended with exit code: 0


你可能感兴趣的:(OC)