1.NSNumber是用来封装基本类型的对象,任何数据封装成NSNumber的时候都可以进行相互比较,或者逻辑运算2.NSNumber的声明NSNumber * intNumber = [[[NSNumber alloc] initWithInt:9] autorelease];NSNumber *...
分类:
其他好文 时间:
2015-06-05 00:05:07
阅读次数:
117
今天优化一个缓存函数,缓存读写在项目中出现的非常频繁,正好之前看到autorelease采用了IMP caching机制,即在项目初始化时就绑定了selector、class和IMP,使得函数运行速率提升,于是想把IMP caching机制也运用到缓存函数上。 原来的函数调用是这样的:NS...
分类:
其他好文 时间:
2015-06-04 18:53:09
阅读次数:
170
如果一个对象的生命周期显而易见,很容易就知道什么时候该new一个对象,什么时候不再需要使用,这种情况下,直接用手动的retain和release来判定其生死足矣。但是有些时候,想知道某个对象在什么时候不再使用并不那么容易。如果下面的代码,看上去非常简单:Sample.h类接口部分#import @i...
分类:
其他好文 时间:
2015-06-02 00:18:31
阅读次数:
195
一、window 简介window 是窗口,每个app都要借助window将内容展现给用户看。
在iOS中,通常使用UIWIndow类来表示窗口,通常一个应用程序只创建一个UIWIndow对象。二、创建UIWindow// 1.创建window对象
self.window = [[[UIWindow alloc] init] autorelease]; // 2.设置window的位...
内存管理一直是学习 Objective-C 的重点和难点之一,尽管现在已经是 ARC 时代了,但是了解 Objective-C 的内存管理机制仍然是十分必要的。其中,弄清楚 autorelease 的原理更是重中之重,只有理解了 autorelease 的原理,我们才算是真正了解了 Objective-C 的内存管理机制。注:本文使用的 runtime 源码是当前的最新版本 objc4-646.t...
分类:
其他好文 时间:
2015-06-01 11:31:28
阅读次数:
117
我是前言 Autorelease机制是iOS开发者管理对象内存的好伙伴,MRC中,调用[obj autorelease]来延迟内存的释放是一件简单自然的事,ARC下,我们甚至可以完全不知道Autorelease就能管理好内存。而在这背后,objc和编译器都帮我们做了哪些事呢,它们是如何协作来正确管....
分类:
其他好文 时间:
2015-05-24 15:26:11
阅读次数:
495
一、基本简介ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切ARC 是编译器特性,而不是 iOS 运行时特性,它也不是类似于其它语言中的垃圾...
分类:
其他好文 时间:
2015-05-24 01:18:45
阅读次数:
241
基本简介ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切ARC 是编译器特性,而不是 iOS 运行时特性,它也不是类似于其它语言中的垃圾收集...
分类:
其他好文 时间:
2015-05-23 18:14:35
阅读次数:
227
MRC, 在这种情况下@autorelesepool块等同于调用NSAutoreleasePool类的api Autorelease对象是在当前的runloop迭代结束时释放的,而它能够释放的原因是系统在每个runloop迭代中都加入了自动释放池Push和Pop 对于每...
分类:
其他好文 时间:
2015-05-22 00:41:50
阅读次数:
144
1.判断某个对象是否属于一个类1 Student *stu = [[[Student alloc] init] autorelease];2 BOOL result= [stu isKindOfClass:[Person class]];3 NSLog...
分类:
其他好文 时间:
2015-05-19 20:51:56
阅读次数:
97