oc为每一个对象提供一个内部计数器.这个计数器跟踪对象的引用计数,当对象被创建或拷贝时.引用计数为1.每次保持对象时,调用retain接口.引用计数加1.假设不需要这个对象时调用release,引用计数减1,当对像的引用计数为0时,系统就会释放掉这块内存,释放对象调用dealloc 当对象包括其它对象时,就得在dealloc中自己释放他们 NSObject是IOS全部类的基类 有两个基本函数.alloc和dealloc alloc相似于C++的new.dealloc相似于delete 当对象的r…
Objective C内存管理之理解autorelease   Autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease,系统只是把该Object放入了当前的Autorelease pool中,当该pool被释放时,该pool中的所有Object会被调用Release. [1]在Iphone项目中,大家会看到一个默认的Autorelease pool,程序开始时创建,程序退出时销毁,按照对Autorelease的理解,岂不是所有autorelease po…
属性的声明:使⽤@property声明属性
 例如:@property NSString *name: 相当于@interface中声明了两个⽅法(setter.getter): 属性的实现:使⽤@synthesize实现属性
例如:@synthesize name = _name; 相当于@implementation实现了setter.getter Objective-C提供属性的⺫的是为了简化程序员编码 为属性提供了⼀些关键字⽤以控制setter.getter的实现细节 这些关键字我们称为…
你好2019!一起努力呀! 主要分三种类型: 1.原子操作相关: nonatomic.atomic nonatomic:非原子操作,对属性赋值的时候不加锁,多线程并发访问会提高访问效率 atomic:原子操作,提供多线程安全,只在其相关的setter或getter方法的时候有加锁安全机制,其他的线程安全不负责 属性默认的是原子操作,但是一般开发使用的是非原子操作.因为关于线程安全,只是依赖原子操作根本实现不了 2.内存管理相关:assign.weak.copy.strong assign:修饰基…
1  配对原则 alloc – release new – release retain - release copy – release 2  new和alloc-init的区别 (1)区别只在于alloc分配内存的时候使用了zone. 这个zone是个什么呢? 它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度. (2)为什么不推荐使用new 因为若用了new,则初始化方法只能是init.这样,假如你想调用initWithFram…
MRC状态下 1 任何继承NSObject的对象,存放于堆控件中,都需要手动管理内存 .2 基本数据类型放到栈中,对象放到堆空间中,内存是有系统管理的.(int\float\enum\struct) 上句 Person *p = [[Person alloc] init]; 上图:[p release]; Person 对象引用计数器为0,手动释放内存,对象被系统回收. 此时: 僵尸对象:当前Person对象成为僵尸对象(对象的内存空间被系统回收,且无法再继续使用) 野指针:指针p被成为野指针(…
ASMM自己主动共享内存管理: 自己主动依据工作量变化调整 最大程度地提高内存利用率 有助于消除内存不足的错误 SYS@PROD>show parameter sga NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ lock_sga                       …
autorelase:可以将对象交给自动释放池中,释放池销毁的时候对里面的对象做一次release操作代码如下 @autoreleasepool { Person *person = [[[Person alloc] init] autorelease]; } 上面代码虽然正确,但是为了简化代码在开发中一般是提供一个类方法来专门创建对象,并且将管理内存的代码封装到类方法中:注意:定义方法名的时候以类名开头,返回类型为instancetype,而且在创建对象的时候使用self关键字 /******…
本文转载至 http://blog.sina.com.cn/s/blog_a843a8850101ds8j.html   (一).关于nil http://cocoadevcentral.com/d/learn_objectivec/ Calling Methods on Nil In Objective-C, the nil object is the functional equivalent to the NULLpointer in many other languages. The d…
内存管理2 我们讨论过properties 后,所有的内存管理系统都是通过控制所有对象的生命周期来减少内存的占用.iOS和OS X应用程序完成这些是通过对象拥有者来实现的,它保证了只要对象使用就会存在,但是不长. 这种对象拥有者的模式来自于引用计数系统,它会记录对象现在被多少对象拥有,当你生命一个对象的拥有者,你要增加它的计数,而当你不用这个对象的时候,你需要减少这个计数.只要它的引用计数大于0,对象就一定会存在.但是一旦计数为0,操作系统就会被允许释放它. 在过去,开发者通常通过调用一个被NS…