黑马程序员:iOS基础——个人笔记(八)
来源:互联网 发布:大数据培训课程有哪些 编辑:程序博客网 时间:2024/06/01 09:14
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
类对象、类的加载过程、SEL、内存管理、循环引用、autorelease
类也是对象,称为类对象
类对象 == 类
类的加载过程:
(1)当程序启动的时候,就会加载一次所有的类,类加载完毕后就会调用+ load方法
(2)当第一次使用这个类的时候,就会调用一次 + initialize 方法
- description 方法:利用%@ 输出对象就会调用此方法
NSLog 输出C语言字符串的时候,不能有中文
SEL : 方法的地址
SEL对象的创建:
(1)SEL s = @selector(test);
(2)SEL s2 = NSSelectorFromString(@"test");
_cmd 代表当前方法
内存管理
每个对象都有引用计数器(4个字节),表示对象被引用的次数
retain 引用计数器+1
release 引用计数器-1
retainCount 获得当前引用计数器值
野指针 : 指向僵尸对象(不可用内存)的指针
EXC_BAD_ACCESS : 访问了一块坏的内存,野指针错误
OC不存在空指针错误,给空指针发送消息不报错
dealloc 回收时调用
最后一定调用[super dealloc];
@property (retain) 对象类;
1、set方法内存管理相关参数
retain:release 旧值 retain 新值
assign:直接赋值(默认)
copy:release 旧值 copy 新值
2、是否要生成set方法
readwrite:同时生成setter 和 getter
readonly:只生成getter
3、多线程管理
nonatomic:性能高(一般用这个)
atomic:性能低(默认)
@class 类名 :循环引用
.h文件用@class
.m文件用@import
两端循环引用解决方案
(非ARC):一端用retain,一端用assign
(ARC):一端用strong,一端用weak
@autoreleasepool{}// 创建释放池
autorelease 方法返回对象本身
autorelease 会将对象放到一个自动释放的池中
当自动释放池被销毁时,会对池子里面的所有对象做一次release操作
池子以栈结构存在(先进后出)
- 黑马程序员:iOS基础——个人笔记(八)
- 黑马程序员:iOS基础——个人笔记(一)
- 黑马程序员:iOS基础——个人笔记(二)
- 黑马程序员:iOS基础——个人笔记(三)
- 黑马程序员:iOS基础——个人笔记(四)
- 黑马程序员:iOS基础——个人笔记(五)
- 黑马程序员:iOS基础——个人笔记(六)
- 黑马程序员:iOS基础——个人笔记(七)
- 黑马程序员:iOS基础——个人笔记(九)
- 黑马程序员:iOS基础——个人笔记(十)
- 黑马程序员-iOS基础-Objective-C基础(八)
- 黑马程序员——Java基础视频笔记(八):多线程编程
- 黑马程序员---------笔记整理(java基础八-----多线程)
- 黑马程序员-IOS学习笔记(八)分类与协议
- 黑马程序员——JAVA学习笔记(八)
- 黑马程序员——IOS学习笔记(Object-c基础)
- 黑马程序员——Struts个人学习笔记(一)
- 黑马程序员——IOS基础(OC基础)
- Leetcode: Minimum Depth of Binary Tree
- TabHost组件的功能用法
- 166Fraction to Recurring Decimal
- oschina上项目删除后,把本地项目上传
- 九章算法面试题69 排颜色 sort colors
- 黑马程序员:iOS基础——个人笔记(八)
- Leetcode: Symmetric Tree
- Leetcode: Same Tree
- 刚注册写个试试
- Leetcode: Balanced Binary Tree
- 黑马程序员(六)IO流
- 网络通讯框架-Volley源码分析(4)
- clean 伪目标
- aaaaaaaaaaaaaaaaa