OC語言day02-09對象作為方法的參數(shù)連續(xù)傳遞(上)

pragma mark 對象作為方法的參數(shù)連續(xù)傳遞(上)

pragma mark 概念

/**
// 注意: 在企業(yè)級開發(fā)中 千萬不要隨意修改一個方法
// 因為這個方法有可能多處用到
 */

pragma mark 代碼

#import <Foundation/Foundation.h>
#pragma mark - 類
#pragma mark - 彈夾

@interface Clip : NSObject
{
    @public
    int _bullet; //子彈
}
// 上子彈的方法
- (void)addBullet;
@end

@implementation Clip
- (void)addBullet
{
    // 上子彈
    _bullet = 10;
}
@end

#pragma mark - 槍
@interface Gun : NSObject
{
//@public
//    int _bullet; //子彈
    Clip *clip;  // 彈夾
}
// 射擊的方法
//- (void)shoot;
// 注意: 在企業(yè)級開發(fā)中 千萬不要隨意修改一個方法
- (void)shoot;

// 想要射擊 必須傳遞一個彈夾
- (void)shoot:(Clip *)c;
@end

@implementation Gun

//- (void)shoot
//{
//    if (_bullet > 0) {
//        _bullet --;
//        NSLog(@"打了一槍 還剩余%d發(fā)",_bullet);
//    }
//    else
//    {
//        NSLog(@"沒有子彈了,請換彈夾");
//    }
//}

- (void)shoot:(Clip *)c
{
    // 判斷有沒有彈夾
    if(c != nil) // nil == null == 沒有值
    {
        // 判斷有沒有子彈
        if (c->_bullet >0)
        {
            c->_bullet -= 1;// 子彈減1
            NSLog(@"打了一槍 還剩余%d發(fā)",c->_bullet);
        }
        else
        {
            NSLog(@"沒有子彈了");
            [c addBullet];
        }
     
    }
    else
    {
        NSLog(@"沒有彈夾,請換彈夾");

    }
}
@end

#pragma mark - 士兵
@interface Soldier : NSObject
{
@public
    NSString *_name;
    double _height;
    double _weight;
}
//開火
- (void)fire:(Gun *)gun;
// 開火,給士兵一把槍 和 一個彈夾
- (void)fire:(Gun *)g clip:(Clip *)clip;
@end

@implementation Soldier
- (void)fire:(Gun *)gun
{
    [gun shoot];
}
// Gun * g = gun
- (void)fire:(Gun *)g clip:(Clip *)clip
{
    // 判斷  是否有槍和子彈
    if (g != nil && clip != nil) {
        [g shoot:clip];
    }
    
}
@end
#pragma mark main函數(shù)
int main(int argc, const char * argv[])
{
    
    // 1.創(chuàng)建士兵
    Soldier *sp = [Soldier new];
    sp->_name = @"狗蛋";
    sp->_height = 1.92;
    sp->_weight = 88.0;
    
    // 2.創(chuàng)建一把槍
    Gun *gun = [Gun new];
//    gun->_bullet = 10;
    
    // 3.創(chuàng)建彈夾
    Clip *clip = [Clip new];
    [clip addBullet];// 添加子彈
    
    // 4.讓士兵開槍
    //    [sp fire];
    [sp fire:gun clip:clip];
#warning 讓對象作為函數(shù)的參數(shù)傳遞

    
    return 0;
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容