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: 概述 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承, 或者有些类中的部分方法功能是固定的,不想让子类重写. ...
随机推荐
- JavaScript系列:replace()函数(第二个参数为函数)
语法 stringobject.replace(regexp/substr,replacement) 只讲解这个:参数replacement为函数时,这个参数函数的参数代表的意义,以及运行次数,及过程 ...
- JavaScript系列:再巩固-原型链
图 1.实例:'对象(实例)'有属性__proto__,指向该对象(实例)的'构造函数的原型对象'. 2.方法:'构造函数'除了有属性__proto__,所有构造函数方法的__proto__指向Fun ...
- 【翻译】CEDEC2014跨世代多平台并行开发PS4版如龙维新开发的一年
本篇PPT讲述的是如龙4的开发过程中,集中在PS3和PS4并行开发中所遇到和解决的一些问题.如64位指针,DX9向DX11移植API的问题,以及在PS4上使用并行渲染在1080P下让FPS达到60等. ...
- [SHELL进阶] (转)最牛B的 Linux Shell 命令 (二)
1.用你最喜欢的编辑器来敲命令 command <CTRL-x CTRL-e> 在已经敲完的命令后按 <CTRL-x CTRL-e> ,会打开一个你指定的编辑器(比如vim,通 ...
- WPF 最大化最小化窗口
public static void FullOrMin(this Window window) { //如果是全屏,则最小化 if (win ...
- Paging
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION Both unequal fixed-si ...
- Advanced Packaging Tool
https://en.wikipedia.org/wiki/Advanced_Packaging_Tool Eventually, a new team picked up the project, ...
- Lazarus中Base64的操作
在字符串处理中,我们经常需要对文件编码然后再进行传输,通常会使用base64编码,在FreePascal中默认集成了这个单元,我们来介绍如何使用: 首先需要在引用单元的时候使用: use base64 ...
- IE 的resize事件问题
window的resize事件,真的让人无语! 我在动态设置元素的HTML内容后,窗口高度变化了,可是却不触发resize事件. 但是我在访问document.documentElement.scro ...
- nRF51822之pstorage使用摘要
https://devzone.nordicsemi.com/question/15271/how-can-i-write-10kb-of-data-to-internal-flash/?answer ...