黑马程序员技术交流社区

标题: OC中对象作为方法参数传递的一个例子 [打印本页]

作者: XHYY    时间: 2015-9-12 22:46
标题: OC中对象作为方法参数传递的一个例子
士兵开枪,枪发射子弹 的一个实现
#import <Foundation/Foundation.h>
@interface Bullet: NSObject
{
@public
    NSString *_size;
   
    int _bulletcount;
   
}

@end
@implementation Bullet

@end

@interface Gun : NSObject
{
@public
    NSString *_size;
}
-(void)shoot:(Bullet *) bullet;
@end

@implementation Gun
-(void)shoot:(Bullet *) bullet{
    if (bullet->_bulletcount>0){
        bullet->_bulletcount--;
        NSLog(@"%@正在射击,剩余子弹%d",_size,bullet->_bulletcount);
    }else{
        NSLog(@"没子弹了,请添加子弹");
    }
}
@end

@interface Solider : NSObject
{
@public
    NSString *_name;
    int _life;
    int _level;
}
-(void)fire:(Gun *)gun andBullet:(Bullet *) bullet;
@end

@implementation Solider
-(void)fire:(Gun *)gun andBullet:(Bullet *) bullet{
    [gun shoot:bullet];
}
@end
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Solider *s=[Solider new];
        s->_name=@"kaiyi";
        s->_level=80;
        s->_life=5000;
        
        Gun *gun=[Gun new];
        gun->_size=@"机关枪";
        
        Bullet *bullet=[Bullet new];
        bullet->_size=@"A1";
        bullet->_bulletcount=2;
        [s fire:gun andBullet:bullet];
        [s fire:gun andBullet:bullet];
        [s fire:gun andBullet:bullet];
    }
    return 0;
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2