美文网首页八天学会OC
第02天OC语言(06):对象作为方法参数传递

第02天OC语言(06):对象作为方法参数传递

作者: liyuhong | 来源:发表于2017-07-20 14:54 被阅读6次
    一、概念
    二、代码
    #import <Foundation/Foundation.h>
    #pragma mark 类
    /*
     士兵
     事物名称 : 士兵 (Soldier)
     属性 : 姓名(name) , 身高(height), 体重(weight)
     行为 : 打枪(fire),打电话(callPhone)
     
     枪
     事物名称 : 枪(Gun)
     属性 : 弹夹(clip),型号(model)
     行为 : 上弹夹(addClip)
     
     弹夹
     事物名称 : 弹夹(Clip)
     属性 : 子弹(Bullet)
     行为 : 上子弹(addBullet)
     */
    #pragma 2.枪
    
    @interface Gun : NSObject
    {
        @public
        int _bullet; // 子弹
    }
    
    // 射击
    - (void)shoot;
    @end
    
    @implementation Gun
    
    - (void)shoot
    {
        if (_bullet > 0)
        {
            _bullet--;
            NSLog(@"打了一枪 %i",_bullet);
        }
        else
        {
            NSLog(@"没有子弹了,请换弹夹");
        }
            
    }
    
    @end
    #pragma 1.士兵
    
    @interface Soldier : NSObject
    {
        @public
        NSString *_name;
        double _height;
        double _weight;
    }
    //- (void)fire;
    - (void)fire:(Gun *)gun;
    @end
    
    @implementation Soldier
    /*
    - (void)fire
    {
        NSLog(@"打了一枪");
    }
    */
    // Gun *gun = gp
    - (void)fire:(Gun *)g
    {
    //    NSLog(@"打了一枪");
        [g shoot];
    }
    
    @end
    
    
    
    #pragma 3.弹夹
    #pragma mark main函数
    int main(int argc, const char * argv[])
    {
        // 1.创建士兵
        Soldier *s = [Soldier new];
        s->_name = @"lyh";
        s->_height = 1.71;
        s->_weight = 65.0;
        
        // 2.创建一把枪
        Gun *gp = [Gun new];
        gp->_bullet = 10;
        
        // 2.让士兵开枪
    //    [s fire];
        // 让对象作为函数的参数传递
        [s fire:gp]; // 地址
        [s fire:gp];
        [s fire:gp];
        [s fire:gp];
        [s fire:gp];
        [s fire:gp];
    
        return 0;
    }
    
    image.png

    相关文章

      网友评论

        本文标题:第02天OC语言(06):对象作为方法参数传递

        本文链接:https://www.haomeiwen.com/subject/gicphxtx.html