IOS开发---OC语言-⑳内存管理:set方法内存管理
2014-12-03 11:45
633 查看
例一:
/*1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作)
2.你不想再使用(占用)某个对象,就应该让对象的计数器-1(让对象做一次release)
3.谁retain,谁release
4.谁alloc,谁release
*/
上面的方法不严谨
例二:
文件名:Person.h*/
#import <Foundation/Foundation.h>
#import "Car.h"
@interface Person : NSObject
{
Car *_car;
int _age;
}
- (void)setAge:(int)age;
- (int)age;
- (void)setCar:(Car *)car;
- (Car *)car;
@end
文件名:Person.m
#import "Person.h"
@implementation Person
- (void)setCar:(Car *)car
{
if (car != _car)
{
// 对当前正在使用的车(旧车)做一次release
[_car release];
// 对新车做一次retain操作
_car = [car retain];
}
}
- (Car *)car
{
return _car;
}
- (void)setAge:(int)age
{ // 基本数据类型不需要管理内存
_age = age;
}
- (int)age
{
return _age;
}
- (void)dealloc
{
// 当人不在了,代表不用车了
// 对车做一次release操作
[_car release];
NSLog(@"%d岁的Person对象被回收了", _age);
[super dealloc];
}
@end
文件名:Car.h
#import <Foundation/Foundation.h>
@interface Car : NSObject
{
int _speed;
}
- (void)setSpeed:(int)speed;
- (int)speed;
@end
文件名:Car.m
#import "Car.h"
@implementation Car
- (void)setSpeed:(int)speed
{
_speed = speed;
}
- (int)speed
{
return _speed;
}
- (void)dealloc
{
/*
_speed :直接访问成员变量
self->_speed :直接访问成员变量
self.speed : get方法
[self speed] : get方法
*/
NSLog(@"速度为%d的Car对象被回收了", _speed);
[super dealloc];
}
@end
总结:
/*内存管理代码规范:
1.只要调用了alloc,必须有release(autorelease)
对象不是通过alloc产生的,就不需要release
2.set方法的代码规范
1> 基本数据类型:直接复制
- (void)setAge:(int)age
{
_age = age;
}
2> OC对象类型
- (void)setCar:(Car *)car
{
// 1.先判断是不是新传进来对象
if ( car != _car )
{
// 2.对旧对象做一次release
[_car release];
// 3.对新对象做一次retain
_car = [car retain];
}
}
3.dealloc方法的代码规范
1> 一定要[super dealloc],而且放到最后面
2> 对self(当前)所拥有的其他对象做一次release
- (void)dealloc
{
[_car release];
[super dealloc];
}
*/
相关文章推荐
- 小白学开发(iOS)OC_ set方法的内存管理分析(2015-08-04)
- iOS开发—OC语言Foundation框架(一)—NSObject常用方法
- 李洪强iOS开发之OC语言description方法和sel
- 小白学开发(iOS)OC_get/set 方法重写(2015-07-28)
- IOS开发---OC语言-⑤方法的声明和实现(无参,有1个参数,有2个参数)
- IOS开发---OC语言-⑦类方法
- IOS开发---OC语言-⑥封装(set、get)
- 第05天OC语言(06):set方法内存管理
- iOS开发OC基础:OC集合NSSet、NSMutableSet以及NSCountedSet的基本方法的使用
- IOS开发---OC语言-㉘内存管理ARC循环调用
- 李洪强iOS开发之OC语言构造方法
- 黑马程序员——IOS基础——OC内存管理-set方法内存管理及微博模型设计
- iOS开发语言之OC 初级内存管理
- IOS开发---OC语言-㉙内存管理:block的使用
- IOS开发---OC语言-⑭id、构造方法、自定义构造方法
- IOS开发---OC语言-⑲内存管理:计数器的基本操作
- iOS开发OC基础:OC数组对象NSArray的常用方法 推荐
- iOS开发OC基础:OC中日期类NSDate类的常用方法
- iOS开发OC基础:类和对象以及方法的声明与实现概述
- OC基础-内存管理-引用计数器+set方法