文档章节

第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
【腾讯Bugly干货分享】JSPatch 成长之路

本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/579efa7083355a9a57a1ac5b Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员...

腾讯Bugly
2016/08/05
23
0
iOS 编写高质量Objective-C代码(二)

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

MrLiuQ
08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

epoll中使用

1、一个线程epoll_wait时,另一个线程调用epoll_ctl是安全的。 2、使用edge触发,在socket有数据到来后,不收取数据,再次调用epoll_ctl将socket加入,仍会触发下一次动作。 asio用该方法来发...

gelare
7分钟前
0
0
PHP规范PSR2

PSR标准 - PSR-2 为了尽可能的提升阅读其他人代码时的效率,下面例举了一系列的通用规则,特别是有关于PHP代码风格的。 各个成员项目间的共性组成了这组代码规范。当开发者们在多个项目中合作...

geek土拨鼠
23分钟前
4
0
【极简】如何在服务器上安装SSL证书?

本文适合任何人了解,图形化操作。下面以腾讯云为例,并且服务器(linux)也安装了宝塔面板。 1.登陆腾讯云账号进入控制台,找到SSL的产品 2.按要求申请并填写表单,记住私钥密码 3.提交后,待...

皇冠小丑
31分钟前
0
0
深入理解编译器

深入理解编译器 原文出处 欢迎向Rust中文社区投稿,投稿地址,好文将在以下地方直接展示 1 Rust中文社区首页 2 Rust中文社区Rust文章栏目 3 知乎专栏Rust语言 编程语言是如何工作的 从内部理解...

krircc
33分钟前
0
0
Centos7&docker-ce&compose&wordpress

如题,最近帮人装个WordPress,想起来用docker方便,这里做个记录。 因为docker要求linux内核版本3.10以上我记得,所以直接用的centos7省去很多麻烦。 主机在国内的先把yum源改成国内的阿里云...

虚拟世界的懒猫
37分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部