1、对象怎么赋给另一个对象?
我们使用最常规的方法试一下:
NSString *str = [[NSString alloc] init];
NSLog(@"%zd",str.retainCount); //结果是1
NSString *str2 = str;
NSLog(@"%zd",str.retainCount); //结果还是1
这里就出现问题了,根据官方说话,第二次打印retainCount的时候长度应该是2才对;
解析:问题就出在赋值上,对象赋值需要使用:
NSString *str2 = [ str retain ];
NSLog(@"%zd",str.retainCount); //结果为2
2、怎么删除一个对象,并对该对象内存空间进行释放
[ str1 release ]; //释放str的内存空间
str1 = nil //将该对象置为空
NSLog(@"%zd",str.retainCount); //结果就是1
3、回收内存,销毁类空间
在类中使用析构方法进行对内存的回收
- (void) dealloc{
[str release]; //释放所属变量成员,否则会内存泄露
str = nil; //释放所属变量成员,否则会内存泄露
[super dealloc] //执行父类的析构方法进行回收
}
4、内存管理的黄金法则
在对对象进行alloc、retain、copy、mutableCopy的时候需要对该对象进行release或则autoRelease;
网友评论