文档章节

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

lyh2017iOS
 lyh2017iOS
发布于 2017/07/12 00:10
字数 276
阅读 2
收藏 0

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

#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

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
OC语言的特性(一)-消息传递与调用函数的表现形式

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

浩浩老师
2015/09/08
1K
0
Lua与ObjC的交互

写在前面 很多时候我们都需要借助一些脚本语言来为我们实现一些动态的配置,那么就会涉及到如何让脚本语言跟原生语言交互的问题。平时在网上看得比较多的是使用JS(JavaScript)与iOS原生代码...

vimfung
2016/12/29
2.1K
7
Swift4.0基础知识回顾

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

博行天下
2017/12/06
0
0
面向对象1-类

NSString类概述 NS前缀:在OC中没有命名空间的概念,在OC中为了把不同项目中的类区别开来,使用前缀;Foundation 与 Application Kit 中使用NS前缀 NSString 是OC用于表示字符串的一个类 NS...

5vinsEnt
2016/03/31
13
0
iOS 编写高质量Objective-C代码(二)

《编写高质量OC代码》已经顺利完成一二三四篇! 附上链接: iOS 编写高质量Objective-C代码(一) iOS 编写高质量Objective-C代码(二) iOS 编写高质量Objective-C代码(三) iOS 编写高质量...

MrLiuQ
08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么Java大神,都在看Spring Boot和Spring Cloud的书?

如果你是一名Java开发人员,并且最近正打算学习Spring Boot和Spring Cloud框架并寻找一些关于它们的最好的书籍,那么,你今天就来对地方了。 本文,我们将讨论一些学习Spring Boot和Spring ...

Java小铺
34分钟前
9
0
springboot logback日志配置

springboot 如果不使用外部tomcat的话,日志是需要自己配置的,不然的话就只有控制台的日志,但是日志又是我们在项目上了生产环境,出问题时,检查问题的唯一途径,所以我们要配置详细的日志...

曾大大胖
34分钟前
2
0
Linux服务器集体篡改时间的方法

Red Hat 虚拟化课程RH318,中小型公司使用的话,感觉可以匹敌OpenStack。手头上有一个VMware的映像,RHEV 3.5版的,只能把系统时间调整到2016年才能使用。Red Hat的RHEV已经更新到4.1版,不过...

大别阿郎
35分钟前
2
0
Tomcat启动异常:java.lang.ClassNotFoundException

警告: Name = mysqlDataSource Property maxActive is not used in DBCP2, use maxTotal instead. maxTotal default value is 8. You have set value of "100" for "maxActive" property, wh......

hengbao5
36分钟前
1
0
GO错误的一些处理(defer,recover,panic)

package main import("fmt""errors")func main() {num := 10fmt.Printf("num的类型%T, num的值%v, num的地址%v\n", num, num, &num)num2 := new(int) //返回一个指针//num...

汤汤圆圆
45分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部