//  main.m
// 对象作为方法的参数传递 #import <Foundation/Foundation.h>
/*
士兵
事物名称: 士兵(Soldier)
属性:姓名(name), 身高(height), 体重(weight)
行为:打枪(fire), 打电话(callPhone) 枪
事物名称:枪(Gun)
属性:弹夹(clip) , 型号(model)
行为:上弹夹(addClip) 弹夹
事物名称: 弹夹(Clip)
属性:子弹(Bullet)
行为:上子弹(addBullet)
*/ @interface Gun : NSObject
{
@public
int _bullet; // 子弹
}
// 射击
- (void)shoot;
@end
@implementation Gun
- (void)shoot
{
// 判断是否有子弹
if (_bullet > ) { _bullet--;
NSLog(@"打了一枪 %i", _bullet);
}else
{
NSLog(@"没有子弹了, 请换弹夹");
}
}
@end
@interface Soldier : NSObject
{
@public
NSString *_name;
double _height;
double _weight;
}
//- (void)fire;
- (void)fire:(Gun *)gun;
@end
@implementation Soldier
/*
- (void)fire
{
NSLog(@"打了一枪");
}
*/
// Gun * g = gp
- (void)fire:(Gun *)g
{
// NSLog(@"打了一枪");
[g shoot];
}
@end
int main(int argc, const char * argv[]) {
// 1.创建士兵
Soldier *sp =[Soldier new];
sp->_name = @"屎太浓";
sp->_height = 1.88;
sp->_weight = 100.0;
// 2.创建一把枪
Gun *gp = [Gun new];
gp->_bullet = ;
// 2.让士兵开枪
// [sp fire];
// 让对象作为方法的参数传递
[sp fire:gp]; // 地址
[sp fire:gp];
[sp fire:gp];
[sp fire:gp];
[sp fire:gp];
[sp fire:gp];
return ;
}

oc12--对象作为参数的更多相关文章

  1. [BS-01] 根据字符串对象的参数自动计算用来显示该字符串的UI控件的宽和高

    根据字符串对象的参数自动计算用来显示该字符串的UI控件的宽和高 1.  影响昵称Label的高和宽的因素: 字体和字号大小.文字多少.高度取决于是否固定了宽度(是否限制了最大的宽度和高度) 2. 使用 ...

  2. STL算法设计理念 - 函数对象和函数对象当参数和返回值

    函数对象: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象.一个类对象,表现出一个函数的特征,就是通过"对象名+(参数列表)&qu ...

  3. Vue-Router路由 Vue-CLI脚手架和模块化开发 之 使用路由对象获取参数

    使用路由对象$route获取参数: 1.params: 参数获取:使用$route.params获取参数: 参数传递: URL传参:例 <route-linke to : "/food ...

  4. Android开发 AIDL使用自定义对象作参数或返回值

    http://www.pocketdigi.com/20121129/952.html 默认,AIDL支持对象作参数,但需要该对象实现Parcelable接口,且aidl文件应该是该类在同一包下,需要 ...

  5. 论DATASNAP远程方法支持自定义对象作参数

    论DATASNAP远程方法支持自定义对象作参数 DATASNAP远程方法已经可以支持自定义对象作参数,这是非常方便的功能. 1)自定义对象 type TMyInfo = class(TObject) ...

  6. SpringMVC接收复杂集合对象(参数)代码示例

    原文: https://www.jb51.net/article/128233.htm SpringMVC接收复杂集合对象(参数)代码示例 更新时间:2017年11月15日 09:18:15   作者 ...

  7. java基础之对象当做参数传进方法的堆栈内存解析

    值类型当做参数传进方法: 引用类型对象当做参数传进方法: String字符串当做参数传进方法:

  8. Request对象获得参数方法:query和body方法

    express框架Request对象获得参数方法:query和body方法 req.query 该属性用法很简单,直接获取地址栏传递的参数:例如: //引入依赖 var express = requi ...

  9. C++对象内存布局,this指针,对象作为参数,作为返回值

    class TestClass { public: void setNum(int num) { m_num1 = num; } int getNum() { return m_num1; } pri ...

  10. spring cloud关于feign client的调用对象列表参数、设置header参数、多环境动态参数试配

    spring cloud关于feign client的调用 1.有些场景接口参数需要传对象列表参数 2.有些场景接口设置设置权限等约定header参数 3.有些场景虽然用的是feign调用,但并不会走 ...

随机推荐

  1. C - Football

    Problem description Petya loves football very much. One day, as he was watching a football match, he ...

  2. 解决QQ未启用状态,QQ留言图标未启用

    最近由于腾讯升级QQ一些东西,导致QQ图标成未启用状态:如图 解决方法,到腾讯此站点登陆一下即可, http://wp.qq.com/set.html 另外设置 没有保存按钮,如果选择完全公开,到自己 ...

  3. Linux安装java jdk、mysql、tomcat

    安装javajdk 1.8 检查是否安装 rpm -qa | grep jdk rpm方式安装 下载java1.8 jdk http://download.oracle.com/otn-pub/jav ...

  4. JavaScript异步加载方案

    (1) defer,只支持IE defer属性的定义和用法(我摘自w3school网站) defer 属性规定是否对脚本执行进行延迟,直到页面加载为止. 有的 javascript 脚本 docume ...

  5. java编程基础篇---------> 编写一个程序,从键盘输入三个整数,求三个整数中的最小值。

    编写一个程序,从键盘输入三个整数,求三个整数中的最小值. 关键:声明变量temp   与各数值比较. package Exam01; import java.util.Scanner; public ...

  6. Android6.0以上版本获取本机蓝牙地址

    Android6.0以上版本使用BluetoothAdapter.getDefaultAdapter().getAddress()是获取不到正确的蓝牙地址的,返回的值都是02:00:00:00:00: ...

  7. dubbo之结果缓存

    结果缓存,用于加速热门数据的访问速度,Dubbo提供声明式缓存,以减少用户加缓存的工作量. lru 基于最近最少使用原则删除多余缓存,保持最热的数据被缓存. threadlocal 当前线程缓存,比如 ...

  8. 利用VMware14安装虚拟机(Win7&CentOS6.4)

    安装Win7 https://blog.csdn.net/Yangchenju/article/details/80694597 安装CentOS6.4 https://blog.csdn.net/u ...

  9. (转)C#开发微信门户及应用(6)--微信门户菜单的管理操作

    http://www.cnblogs.com/wuhuacong/p/3701961.html 前面几篇继续了我自己对于C#开发微信门户及应用的技术探索和相关的经验总结,继续探索微信API并分享相关的 ...

  10. Repeater + 分页控件 AspNetPager 研究

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs ...