黑马程序员_object c学习日记④_内存管理二:@property参数强化、@class及autorelease
来源:互联网 发布:苹果破解软件下载 编辑:程序博客网 时间:2024/04/29 15:42
-------------------------------------- android培训、java培训、ios培训期待与您交流! ---------------------------------
@property参数:
@property (retain) Book *book;
// retain:自动生成setter里面会release旧值,retain新值。
① 内存管理相关参数
l retain:release旧值,retain新值(适用于oc对象类型)
l assign:直接赋值(默认,适用于非oc对象类型)
l copy:release旧值,copy新值
② 是否要生成set方法
l readwrite:同时生成setter和getter的声明、实现(默认)
l readonly:只会生成getter的声明、实现
③ 多线程管理
l nonatomic:性能高
l atomic:性能低(默认)
④ setter和getter方法名称
l setter:决定了set方法的名称,一定要有冒号
l getter:决定get方法的名称(一般用在BOOL类型)
@class
@class的作用:仅仅告诉编译器,某个名称是一个类
@class 类名
开发中引用一个类的规范
1> 在.h文件中用@class来声明类
2> 在.m文件中用#import来包含的所有东西
3> 非ARC:两端循环引用解决方案:一端用retain,一端用assign
autorelease的基本用法:
方法会返回对象本身,会将对象放到一个自动释放池中,当自动释放池被销毁时,会对池子里面的所有对象做一次release操作。
调用完autorelease方法后,对象的计数器不变
autorelease的好处:
① 不用再关心对象释放的时间
② 不用再关心什么时候调用release
autorelease的注意点:
① 占用内存较大的对象不要随便使用autorelease
② 占用内存较小的对象使用autorelease,没有太大意义
错误写法:
① alloc之后调用了autorelease,又调用release
② 连续调用多次autorelease
自动释放池:
ios5.0前
NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
[pool release];
ios5.0后:
@autoreleasepool创建自动释放池
① 在ios程序运行过程中,会创建无数个池子。这些池子都是以栈结构存在(先进后出)
② 当一个对象调用autorelease方法时,会将这个对象放到栈顶的释放池
1系统自带的方法里面没有包含alloc、new、copy,说明返回的对象都是autorelease的
2 开发中经常会提供一些类方法,快速创建一个已经autorelease过的对象
创建对象时不要直接用类名,一般用self
-------------------------------------- android培训、java培训、ios培训期待与您交流! ---------------------------------
- 黑马程序员_object c学习日记④_内存管理二:@property参数强化、@class及autorelease
- OBJ-C内存管理+@property参数+@class+autorelease学习笔记
- 黑马程序员_object c学习日记②_@property和@synthesize、构造方法、分类及类对象
- 黑马程序员_object c学习日记_复习Foundation
- 黑马程序员--OC自学笔记---07内存管理、@property参数、@class、autorelease
- 黑马程序员--IOS_学习笔记_内存管理_@autorelease
- 黑马程序员_object c学习日记①_类的声明定义、点语法及成员变量作用域
- 黑马程序员_object c学习日记③_SEL数据、内存管理一:引用计数器、retain、release、dealloc等
- 黑马程序员_object c学习日记_c语言部分
- 黑马程序员--ios基础--oc内存管理--@property参数、循环引用、autorelease
- 黑马程序员_学习日记 struct class
- 黑马程序员_object c学习日记⑤_ARC、强指针、block、协议
- 黑马程序员_object c学习日记⑥_Foundation框架:结构体、集合类、NSString、日期类
- 黑马程序员---内存管理之autorelease
- 黑马程序员--IOS学习日记:09--property参数
- 黑马程序员_学习日记二_异常二
- objective-c---SEL、内存管理(引用计数器、野指针、@property参数、循环retain、autorelease)
- 黑马程序员_学习日记十七_交通灯管理系统
- typedef和#define的用法与区别
- 伊琍爸爸身份系公关遭疑 马伊琍父亲追问周刊别逼人
- Java NIO 研究
- 01.servlet入门笔记
- 16个超棒的国外免费PSD资源素材网站推荐
- 黑马程序员_object c学习日记④_内存管理二:@property参数强化、@class及autorelease
- 一种简单实用的双向电平转换电路(非常实用!)3.3V--5V
- 使用Github存储自己的项目代码
- 【每日一C之十】const与define区别
- MFC之基于Gdiplus的图像类
- 02.ServletConfig笔记
- Android打开系统相册的问题
- 排序总结之基数排序
- 数据结构之栈的实现