OC对象,自动释放池,OC与C语言的区别
在C语言中,编程都是面向过程的编程,每一个代码块都严格按照从上至下的顺序执行,在代码块之间同样也是这样,
但是在OC中往往不是这样,OC和C++、java等语言一样,都是面向对象的编程语言,在代码的执行上有很大的跳跃性。
OC是C语言的超集,对C语言所有的功能进行了封装,例如,OC对C语言的字符串进行了封装形成了OC的NSString,对字符串进行封装形成了NSArray;
OC中可以这样定义一个字符串:NSString *str = @"";在这里对这句话加一个说明,NSString 是定义字符串的关键字,* 是在定义OC对象类型变量时必须使用的,
str是你定义的变量名,@是将c基本对象类型对象化,在赋值和输出的时候会普遍用到,引号之间就是你想赋值给str的内容(在这里即为空),最后和C语言一样以分号结尾,
同样我们可以定义一个数组类型的变量:NSArray *arr = @[@"",@""];(这个数组里面有两个元素,两个元素都为空);
自动释放池就是用来自动释放内存的,当一个对象是用strong,copy,retain创建,并且在自动释放池中,每过一段时间系统会自动去判断这个对象的生命周期,即这个对象是否在被使用,如果已经没有被使用,那么这个对象将被释放掉,在ARC机制(Xcode默认ARC)里面通常不用自己写,也有一些特殊情况会要自己去写,一些短时间内创建大量内存的,比如视频操作。
在C语言中输出用printf;但是printf只能输出C语言的基本对象类型,不能输出对象类型,所以在OC中用NSLog进行输出
输出的格式为:NSLog(@"%@ %@",str,arr);
OC对象,自动释放池,OC与C语言的区别的更多相关文章
- 63 (OC)* NSAutoreleasePool 自动释放池
目录 0:ARC 1: 自动释放池 2:NSAutoreleasePool实现原理 3:autorelease 方法 4: Runloop和Autorelease的关系 5: Using Autore ...
- 刀哥多线程自动释放池autoreleasepool
自动释放池 作用 自动释放对象的 所有 autorelease 的对象,在出了作用域之后,会被自动添加到最近创建的自动释放池中 自动释放池被销毁或者耗尽时,会向池中所有对象发送 release 消息, ...
- OC中对象元素的引用计数 自动释放池的相关概念
OC中数组对象在是如何处理对象元素的引用计数问题的,同时介绍一下自动释放池的相关概念 一.数组对象是如何处理对象元素的引用计数问题[objc] view plaincopy 1. // 2. / ...
- OC学习篇之---数组对象的引用计数问题和自动释放池的概念
之前一片文章中我们介绍了OC中的两个关键字@property和@synthesize的使用的使用: http://blog.csdn.net/jiangwei0910410003/article/de ...
- C++模拟OC的多重自动释放池
使用过OC的都知道,OC的引用计数机制用起来还比较方便.于是就仿照OC的形式搞了个C++引用计数. 支持多重自动释放池,每次autorelease都会放到栈顶的自动释放池中. 自动释放池也可以像变量一 ...
- OC 内存泄露 自动释放池
花絮:看到下面的代码就想起这么一个调侃: 一个老程序员,功成名就,金盆洗手不在写代码后,决定练练书法.提笔思索良久后在纸上写下:Hello world! /********************** ...
- OC之property和自动释放池
property实例 property参数 自动释放池 一.property实例 1.前边的例子我们看到,我们在一个类中如果用到另外一个类的实例作为自己的成员变量时,通常需要在setter方法中,先r ...
- OC自动释放池autoreleasepool介绍
自动释放池的机制是:它使得应用在创建新对象时,系统能够有效地管理应用所使用的内存. @autoreleasepool { statements } 在创建新对象时,并且系统未启动ARC特性,那么在使用 ...
- OC_内存管理(二)对象复制、循环引用问题、自动释放池
循环调用: 1.循环引用的问题 两个对象A.B,有可能会出现特殊情况:A中包含B的实例变量:B中也包含A的实例变量,如果这两个实例变量都是强引用(A有着B的实例变量所有权,B也有A的实例变量所有权 ...
随机推荐
- python--第十七天总结(Django)
基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: pytho ...
- mysql 2pc理解
- 【Spring学习】Spring的源码解析之路 ——【step1】基础环境配置 + IDEA快捷键整理
前导: 本次主要是关于“基础环境搭建”的内容,分为三个部分,(1)查看源码和项目需要的开发集成环境Intellig IDEA的使用,(2)如何导入源码,(3)在这个过程中梳理出的快捷键 正文:==== ...
- jinji2
---恢复内容开始--- part1 %d 十进制整数输出 int %f 浮点数(小数点后六位)float %c 单个字符输出 char % ...
- 《Java从入门到精通》学习总结1
1. Java既是编译型语音,也是解释型语言:先将源代码编译成Java字节码,然后Java虚拟机对Java字节码进行解释运行 2. 使用命令行编译Java源代码时,如果代码中有中文,在编译时需要指定编 ...
- 如何用命令将本地项目上传到git[z]
1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2.把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点 ...
- Linode KVM安装Windows系统的设置方法
以前我们用老的Linode VPS主机的时候是采用的XEN架构的,如今我们新注册账户,以及新开的机器是KVM架构.根据后台的设置,我们看到好多网友有在LINODE中安装WINDOWS系统,理论上是可以 ...
- 通过js获取外部css样式
通过js获取外部样式表中的属性,比如.box在style.css样式表中有个属性叫font-size:16px; 通过js获取.box的这个属性: js代码为: <script> wind ...
- 第5-7次OO作业总结分析
(1)从多线程的协同和同步控制方面,分析和总结自己三次作业来的设计策略及其变化. 第五次作业 第五次作业是对多线程的初步探索,所以对于多线程的基本书写机制的认识比较多.本次作业难点在于了解多线程的运作 ...
- Jmeter 聚合报告---测试结果分析
当我们测试完后,最关心就是结果数据了,下面一起来分析Jmeter聚合报告数据. 首先来看下Jmeter的help是如何解释这些含义的. 1.Label - The label of the sampl ...