OC 对象和匿名对象
OC 对象和匿名对象
对象和匿名对象的定义:
当new出一个对象时,如果用一个指针接收这个对象,那么这个指针通常被称为对象。
如果new出的对象,不用指针接收,那么这个对象就称为匿名对象。
#import <Foundation/Foundation.h>
#import "Iphone.h"
#import "Person.h" int main(int argc, const char * argv[]) { //1.通过指针访问对象
Iphone *ip = [Iphone new]; // 创建一个对象,并用指针ip接收
ip->_size = 4.3; //这种是指针访问结构体成员变量的专用写法。OC的对象都是指针,存储着堆中的一块内存地址。
ip.weight = ; // 通过点语法来访问对象的成员变量
[ip powerOff]; // 通过指针来访问对象的方法 //2. 匿名对象,无指针
[Iphone new]; // 这里创建了一个对象,但是这个对象并没有用指针来接收,这个对象就是匿名对象 注意:每次创建一个匿名对象,都会给这个对象分配不同的存储空间,也就是说每个匿名对象都不相同。
//3.没有两个相同的匿名对象
[Iphone new]->_cpu = ; // 给第1个匿名对象_cpu赋值
[Iphone new]->_size = 4.0; //给第2个匿名对象_size赋值
[Iphone new]->_weight = ; //给第3个匿名对象_weight赋值
[[Iphone new] powerOff]; //调用第4个匿名对象powerOff方法
NSLog(@"%@",[Iphone new]); //打印第5个匿名对象 //猜猜看,这里打印的结果全为0。
//原因是每次赋值时,都创建了新的匿名对象,NSLog打印的是一个新的匿名对象,它的成员变量并没有赋值。所以都为0。 //4. 匿名对象可以作为实参进行传递
Person *p = [Person new];
Iphone *ip = [Iphone new];
[p sendSignal:ip]; //这里是通过指针,作为实参传递 [p sendSignal:[Iphone new]];//这里是使用匿名对象,作为实参传递,但是[Iphone new]对象在这次使用之后就会被销毁,除非有新的指针引用它。 return ;
}
OC 对象和匿名对象的更多相关文章
- 牛客网Java刷题知识点之匿名对象、匿名对象的内存结构图、匿名对象的应用场景、匿名对象的使用、匿名对象的简单例子、匿名对象要注意的事项
不多说,直接上干货! 什么是匿名对象? 答: 没有名字的实体,也就是该实体没有对应的变量名引用. 没有名字的实体,没有引用类型变量指向的对象称作为匿名对象. 正常的,是 Car car = new ...
- 匿名对象 构造方法 重载 构造代码块 this 关键字
一.匿名对象 1.匿名对象 :没有名字对象 2.匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值,无法获取属性值. 2.匿名对象永远都不可能事一个对象. 3.匿名对象的好处 : 书写简单. ...
- LINQ学习系列-----1.4 匿名对象
本篇内容接着上一篇继续讲述,本篇简单讲解匿名对象 一.匿名对象介绍 上代码: var result=new { ID=, Name="张三", Age= ...
- JAVA_SE基础——27.匿名对象
黑马程序员入学blog... 匿名对象:没有引用类型变量指向的对象称作为匿名对象. 匿名对象要注意的事项:1. 我们一般不会给匿名对象赋予属性值,因为永远无法获取到.2. 两个匿名对象永远都不可能是同 ...
- 《java入门第一季》之面向对象(匿名对象)
/* 匿名对象:就是没有名字的对象. 匿名对象的应用场景: A:调用方法,仅仅只调用一次的时候. 注意:调用多次的时候,不适合. 匿名对象调用完毕就是垃圾.可以被垃圾回收器回收,释放了系统资源. B: ...
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
- Java——构造方法和匿名对象
前言 在编写程序时不安全的初始化会导致程序发生发生重大错误.为了使程序可以被安全地初始化,C++引入了构造器(也可以成为构造方法)的概念,这是一个在创建对象时被自动调用的特殊方法.Java中也采用了构 ...
- 13_Java面向对象_第13天(static、final、匿名对象、内部类、包、修饰符、代码块)_讲义
今日内容介绍 1.final 关键字 2.static 关键字 3.匿名对象 4.内部类 5.包的声明与访问 6.访问修饰符 7.代码块 01final关键字概念 A: 概述 继承的出现提高了代码的复 ...
- 5、static、final、匿名对象、内部类、包、修饰符、代码块
final关键字 final关键字概念 * A: 概述 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承, 或者有些类中的部分方法功能是固定的,不想让子类重写. ...
随机推荐
- uc_key getshell
<?php $key = 'cebbvi5s15BSiMXteaP9TNCIz5K5jAVekw7tcV9TqmYCNT5VOJdu7toOxipTX';#uc_key 写在这里 $url = ...
- in_array 的第三个参数strict设置为 true
var_dump(in_array(0, array('s' )); 这句话的结果是bool(true). 因为in_array会将0 和's' 进行比较,0是number类型,'s'是string类 ...
- Spring+Mybatis+MySql+Maven 简单的事务管理案例
利用Maven来管理项目中的JAR包,同时使用Spring在业务处理层进行事务管理.数据库使用MySq,数据处理层使用Spring和Mybatis结合. 本案例代码主要结构如图: 1.数据库脚本 -- ...
- Grand Theft Auto V 图形研究(3)
原文链接 http://www.adriancourreges.com/blog/2015/11/02/gta-v-graphics-study-part-3/ Post Processing Eff ...
- 解决Windows照片查看器中图片显示发黄的问题
这其实是ICC颜色配置的问题,发生在Windows7自动更新下载了显示器的驱动后,自动安装后显示器的颜色配额制文件自动改为新下载的配置,导致显卡和显示器颜色配置不兼容的问题,不过不用担心,非常容易解决 ...
- 【php学习】array_map,array_walk,array_filter的区别
array_map(function($v){return $v+1;}, $array); array_walk($array, function($v, $k){...}); array_filt ...
- 【转】Unity3D中脚本的执行顺序和编译顺序(vs工程引用关系)
http://www.cnblogs.com/champ/p/execorder.html 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行.与 ...
- 文件批量上传的工具,要实现暂停继续、断点续传等功能(使用QtNetwork和QHttpMultiPart,和定时器检查超时)
最近在做一个文件批量上传的工具,要实现暂停继续.断点续传等功能.利用Qt自带的QtNetwork模块,完成这些需求并没有费多少周章,主要思路就是将文件分块,然后用while循环依次传输.具体实现代码比 ...
- ASP.NET MVC3更新出错:ObjectStateManager中已存在具有同一键的对象
程序代码: [HttpPost] public ActionResult Edit(Person person) { if (ModelState.IsValid) { Person oldperso ...
- Magento 安装时文件权限 设置
http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/magento_filesystem_permission ...