pragma mark 对象作为方法参数传递
pragma mark 概念
pragma mark 代码
#import <Foundation/Foundation.h>
/**
穿越火线
士兵
事物名称:士兵 (Soldier)
属性: 姓名(name),身高(height),体重(weight)
行为: 开枪(fire),打电话(callPhone)
枪
事物名称: 枪(Gun)
属性: 弹夹(clip), 型号(model)
行为: 上弹夹(addClip)
弹夹
事物名称: 弹夹(Clip)
属性: 子弹(Bullet)
行为: 上子弹(addBullet)
*/
#pragma mark - 类
#pragma mark 枪
@interface Gun : NSObject
{
@public
int _bullet; //子弹
}
// 枪最清楚如何打 所以射击方法 是属于枪的
// 射击的方法
- (void)shoot;
@end
@implementation Gun
- (void)shoot
{
if (_bullet > 0) {
_bullet --;
NSLog(@"打了一枪 还剩余%d发",_bullet);
}
else
{
NSLog(@"没有子弹了,请换弹夹");
}
}
@end
#pragma mark 士兵
@interface Soldier : NSObject
{
@public
NSString *_name;
double _height;
double _weight;
}
//- (void)fire;
//开火
- (void)fire:(Gun *)gun;
@end
@implementation Soldier
/*
- (void)fire
{
NSLog(@"打了一枪");
}
*/
// Gun * g = gun
- (void)fire:(Gun *)g
{
// NSLog(@"打了一枪");
[g shoot];
}
@end
#pragma mark main函数
int main(int argc, const char * argv[])
{
#pragma mark 7.对象作为方法参数传递
// 1.创建士兵
Soldier *sp = [Soldier new];
sp->_name = @"狗蛋";
sp->_height = 1.92;
sp->_weight = 88.0;
// 2.创建一把枪
Gun *gun = [Gun new];
gun->_bullet = 10;
// 3.让士兵开枪
// [sp fire];
#warning 让对象作为函数的参数传递
// 让对象作为函数的参数传递
[sp fire:gun]; // gun 是 枪的地址
[sp fire:gun]; // gun 是 枪的地址
[sp fire:gun]; // gun 是 枪的地址
[sp fire:gun]; // gun 是 枪的地址
return 0;
}