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)系作者