oc-30-堆栈
/**
操作引用计数器的方式:每个对象内部(对象的堆内存里面)都有一个引用计数器变量,表示对象被引用的次数。
1:retainCount:获得对象的引用计数器的值
2:retain:能够让对象的计数器值变量+1,要想计数器变量加1就要调用对象的retain方法
3:release:让对象的计数器变量值 - 1,要想计数器变量减1就要调用对象的release方法 怎么判断对象被释放?
dealloc方法:只要调用了这个方法,就代表对象即将被释放. 僵尸对象:已经被释放的对象,堆空间已经释放的对象。
野指针:指向僵尸对象的指针
空指针:指向nil的指针,给空指针发送消息(调用方法)不会报任何错误.
内存泄露:程序结束了,堆对象内存没有释放。
*/
#import <Foundation/Foundation.h>
#import "Person.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *p = [[Person alloc] init]; //
[p retain]; // 让对象引用计数器值 +1 //
[p retain]; //
[p release]; // 减-1 //
[p release];
[p release]; // 对象被释放
NSLog(@"%lu",h.retainCount);//如果正常空间被回收这句话无法输出。
p = nil; // 给空指针发送消息,不会报任何错误,后面调用方法也不会出错。
[p release]; // p就是野指针,想要操作Person这个僵尸对象 //
}
return ;
} //
//Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@end //Person.m
#import "Person.h"
@implementation Person
- (void)dealloc
{
NSLog(@"人被释放啦不要再做其他的事来");
// 必须调回父类的dealloc方法
[super dealloc];
}
@end
oc-30-堆栈的更多相关文章
- OC - 30.如何封装自定义布局
概述 对于经常使用的控件或类,通常将其分装为一个单独的类来供外界使用,以此达到事半功倍的效果 由于分装的类不依赖于其他的类,所以若要使用该类,可直接将该类拖进项目文件即可 在进行分装的时候,通常需要用 ...
- .NET 术语
.NET 术语 1. AOT 预编译器.与 JIT 类似,此编译器还可将 IL 转换为机器代码. 与 JIT 编译相比,AOT 编译在应用程序执行前进行并且通常在不同计算机上执行. 由于在运行时 AO ...
- L3-002 特殊堆栈 (30 分) 模拟stl
堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除).本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的 ...
- L3-002 特殊堆栈 (30 分)
大家都知道“堆栈”是一种“先进后出”的线性结构,基本操作有“入栈”(将新元素插入栈顶)和“出栈”(将栈顶元素的值返回并从堆栈中将其删除).现请你实现一种特殊的堆栈,它多了一种操作叫“查中值”,即返回堆 ...
- L3-002 特殊堆栈 (30分) vector容器的模拟、vector容器的一些用法
vector容器的简单应用,我们可以用vector维护一个有序数组,每次对要插入的数用upper_bound或者lower_bound来 为这个数找一个应该插入到vector的位置.另外再找一个数组来 ...
- 38 (OC)* 进程、线程、堆栈
一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcode,系统就会分别启动2个进程 通过“ ...
- 30 (OC)* 数据结构和算法
在描述算法时通常用o(1), o(n), o(logn), o(nlogn) 来说明时间复杂度 o(1):是最低的时空复杂度,也就是耗时/耗空间与输入数据大小无关,无论输入数据增大多少倍,耗时/耗空间 ...
- IOS学习之路--OC的基础知识
1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...
- iOS求职之OC面试题
1.Objective-C的类可以多重继承么?可以采用多个协议么? 答:不可以多重继承,可以采用多个协议. 2.#import和#include的区别是什么?#import<> 跟 #im ...
- iOS谋职之OC面试题
iOS谋职之OC面试题 iOS求职之OC面试题 IOS求职之OC面试题 1.Objective-C的类可以多重继承么?可以采用多个协议么? 答:不可以多重继承,可以采用多个协议. 2.#import和 ...
随机推荐
- 星星字体 ps教程
本教程主要使用Photoshop制作绚丽星空装饰的艺术字教程,这个教程很简单,只需要一些简单技巧,即可做出海报.书籍杂志的封面效果.其中的字体.笔刷和背景均可以更换 教程所需要的素材链接:http:/ ...
- STL源码剖析读书笔记--第四章--序列式容器
1.什么是序列式容器?什么是关联式容器? 书上给出的解释是,序列式容器中的元素是可序的(可理解为可以按序索引,不管这个索引是像数组一样的随机索引,还是像链表一样的顺序索引),但是元素值在索引顺序的方向 ...
- js运动 九宫格展开
<!doctype html> <html> <head> <meta charset = "utf-8"> <title&g ...
- Hadoop Java开发实用快捷键收藏
不断总结更新.... Alt + / 补全 Ctrl + T 打出结构 Ctrl + 2 ,再选择 Quick Assist - Assign to local variable Ctrl ...
- express 学习笔记
首先把这个库加载下来 npm install -g express 这样会安装它所有依赖包,这个非常恐怖.这个框架要依赖这么多外来的东西,如果有一个不与时俱进就会拖累整个框架的质量. C:\windo ...
- 理解js闭包(一)
@(编程) 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. ...
- hdu 5655 CA Loves Stick
CA Loves Stick Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...
- POJ2533Longest Ordered Subsequence(DP)
http://poj.org/problem?id=2533 在经典不过的DP题目了.... #include <map> #include <set> #include &l ...
- 设置UIButton文字大小颜色不同
_loginBtn = [[UIButton alloc]initWithFrame:CGRectMake(iconX, CGRectGetMaxY(passwordBGView.frame)+25, ...
- 微信内置浏览器图片查看方式的原生实现(非jssdk)
对于非公众平台网页,想调起图片预览组件,就跟公众号文章一样的图片阅读方式,实现起来是比较简单的,官方也提供了jssdk来做这个.详见 http://mp.weixin.qq.com/wiki/7/aa ...