文档章节

第02天OC语言(10):对象作为返回值

lyh2017iOS
 lyh2017iOS
发布于 2017/07/12 00:11
字数 406
阅读 0
收藏 0

#####一、概念 #####二、代码

#import <Foundation/Foundation.h>
#pragma mark 类
#pragma mark - 3.弹夹

@interface Clip : NSObject
{
@public
    int _bullet;
}
- (void)addBullet;
@end

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

#pragma mark - 2.枪
@interface Gun : NSObject
{
@public
    Clip *clip; // 弹夹
    
}
// 注意 : 在企业开发中 千万不要随意修改一个方法
- (void)shoot;
// 想要射击,必须传递弹夹
- (void)shoot:(Clip *)c;

@end

@implementation Gun

- (void)shoot:(Clip *)c
{
    
    if (c != nil) { // nul == null == 没有值
        // 判断有没有子弹
        if (c->_bullet > 0) {
            c->_bullet -=1;
            NSLog(@"打了一枪 %i",c->_bullet);
        }
        else
        {
            NSLog(@"没有子弹了");
        }
    }
    else
    {
        NSLog(@"没有弹夹 ,请换弹夹");
    }
}
@end
#pragma mark - 1.士兵
@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 *)g
{
    [g shoot];
}

- (void)fire:(Gun *)g Clip:(Clip *)clip
{
    if (g != nil &&
        clip != nil){
        [g shoot:clip];
    }
}
@end

#pragma mark - 0.商店

@interface Shop : NSObject

// 买枪
+ (Gun *)buyGun:(int)monery;
// 买弹夹
+ (Clip *)buyClip:(int)monery;

@end

@implementation Shop

+ (Gun *)buyGun:(int)monery
{
    // 1.创建一把枪
    Gun *g = [Gun new]; // 通过 new 创建出来的对象 存储在堆中,堆中的数据 不会自动释放
    // 2.返回一把枪
    return g;
}
// 买弹夹
+ (Clip *)buyClip:(int)monery
{
    // 1.创建弹夹
    Clip *clip = [Clip new];
    [clip addBullet]; // 添加子弹
    // 2.返回弹夹
    return clip;
}

@end



#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;
    
    // 商家对象
//    Shop *shop = [Shop new];
    
    // 2.创建枪
//    Gun *gp = [Gun new];
    // 2.购买手枪
    Gun *gp = [Shop buyGun:888];
    
    
    // 3.创建弹夹
//    Clip *clip = [Clip new];
//    [clip addBullet];
    
    // 3. 购买弹夹
    Clip *clip = [Shop buyClip:88];
    
    // 4.士兵开火
    [s fire:gp Clip:clip];

    
    return 0;
}

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
私信 提问
Object-C基础-04-自定义构造方法和description方法

知识回顾 在第5讲中已经介绍了如何定义类和创建并初始化对象,比如有Student这个类 1.Student.h #import <Foundation/Foundation.h> @interface Student : NSObject { int _age;}- (void)se......

Corwien
2016/03/17
23
0
Swift4.0基础知识回顾

简单介绍一下Swift Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序,Swift语言让应用开发更简单、更快、更稳定,确保最终应用有着更好的质量更多了解Swift可以去《The...

博行天下
2017/12/06
0
0
OC字符串

1.OC字符串 C语言中,字符和字符串都为常量。 OC中仍然可以使用C的字符串和字符,但其有专有的字符类,可以声明专有的字符串对象。OC的字符串,结尾不考虑尾0,查字符串位置时,起始为0,这和...

飞奔的土豆
2012/12/10
0
0
iOS-消息转发机制

前言 其他编程语言所说的函数调用,在oc中被称作为发送消息;消息转发的作用,开发者可以在找不到的方法的情况下,可以通过动态添加方法或者是消息转发,确定本次发送消息是否成功,通过这样...

麦兜卖鱼丸
2016/03/27
66
0
OC语言的特性(一)-消息传递与调用函数的表现形式

我们在初学Objective-C时,都会觉得ObjC中的消息传递和其他语言的调用函数差不多,只是在OC中,方法调用用消息传递这一概念来代替。 那么到底怎样区别OC中的消息传递与其他语言的调用函数呢。...

浩浩老师
2015/09/08
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

图形用户界面和交互输入方法---图形数据的输入功能

图形数据的输入功能 输入模式 回显反馈

中国龙-扬科
刚刚
0
0
互联网企业安全之端口监控

背景 外网端口监控系统是整个安全体系中非常重要的一环,它就像眼睛一样,时刻监控外网端口开放情况,并且在发现高危端口时能够及时提醒安全、运维人员做出相应处理。 对安全人员来说,互联网...

Skqing
2分钟前
0
0
JavaMonitor

常规监控jvm,都是比较麻烦的。但是今天在开源中国,看到了一个web版的javaMonitor。 虽然要在服务器上安装,但是这样的话,大家都能看见了。所以还是非常six的。 发现写了这个的博主也是非常...

miaojiangmin
6分钟前
0
0
Redis实践系列丨Codis数据迁移原理与优化

Codis介绍 Codis 是一种Redis集群的实现方案,与Redis社区的Redis cluster类似,基于slot的分片机制构建一个更大的Redis节点集群,对于连接到codis的Redis客户端来说, 除了部分不支持的命令外...

中间件小哥
7分钟前
0
0
HTTP常用状态码(14种)

类别 原因短语 1xx 信息型状态码 接收的请求正在处理 2xx 成功状态码 请求正常处理完毕 3xx 重定向状态码 需要进行附加操作以完成请求 4xx 客户端错误状态码 服务器无法处理请求 5xx 服务器错...

vio小黑
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部