oc学习总结(二)
7、内存管理
》以下两种情况发生时,所有者对象将会获得该对象的所有权
创建或者复制对象:alloc, allocWithZone:, copy, copyWithZone:, mutableCopy, mutableCopyWithZone:
保留对象:retain
》在不需要时所有者对象必须释放对该对象的所有权
release, autorelease
》release的一些场景
1、alloc后不用时
2、数组的addObject后
3、对象持有其他对象所有权时的dealloc方法中
8、点语法
》赋值
assign:直接赋值(相当于一个别名),default。
retain:保留对象,两个对象指向同一内存区域
copy:拷贝对象,开辟新空间。指向不同内存空间。有时相当于retain。必须实现NSCopying协议
》读写性
readwrite:生成getter和setter,default
readonly:只有getter
》原子性(多线程环境下)
nonatomic:不锁定,
atomic:锁定,线程保护,default
9、文件管理
》NSFileManager
文件(目录)的创建,删除等操作,构造方法[NSFileManager defaultManager]
》NSFileHandle
文件内容的创建,修改等操作,可以创建分别用于读、写和修改的handle对象
10、NSTimer定时器
》常用方法
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti
target:(id)aTarget selector:(SEL)aSelector
userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
ti:间隔时间,秒数
target:selector所属对象
selector:间隔执行方法,一般包含一个NSTimer参数timer,可以将当前创建的NSTimer传递给该方法
userInfo:一般用于传递参数给selector,取出timer.userInfo
repeats:是否重复执行
》在控制台程序中,为避免main函数过早return后,定时器无法起作用,
这时必须使用[[NSRunLoop currentLoop] run]来使程序一直运行起
11、对象的深浅拷贝
》拷贝必须实现拷贝协议NSCopying和NSMutableCopying,实现copyWithZone方法
》copy和mutableCopy都是NSObject中的方法,调用时会调用NSCopying协议中得copyWithZone方法
》Foundation框架中,当copy的是一个不可变对象时,相当于retain(cocoa做得内存优化)
mutableCopy或者是可以变对象的copy都是拷贝一个新对象
》浅拷贝:只拷贝对象本身,不拷贝对象的属性;深拷贝:拷贝对象包含的属性;Foundation中支持拷贝的对象
都只是浅拷贝,包括NSNumber,NSArray,NSString,NSDictionary,NSMutableArray,
NSMutableDictionary,NSMutableString
12、对象的归档
》归档NSKeyedArchiver,可以指定key来序列化多个对象在同一个文件中
》解归档NSKeyedUnarchiver
》对象必须实现NSCoding协议才能进行归档和解归档
- (void)encodeWithCoder:(NSCoder *)aCoder; 归档
- (id)initWithCoder:(NSCoder *)aDecoder; 解归档
13、 单例模式
》应用场景
1、保存全局数据
2、重量级对象:初始化耗费资源的对象,提高效率
》单例对象的创建
1、定义一个静态全局值为nil的对象 static AppManager *manager = nil;
2、定义一个类方法创建对象 + (id)shareManager;
+ (id)shareManager{
//此处必须加线程保护,防止多线程环境中创建出多个实例
@synchronized(self){
if(manager==nil){
manager = [[AppManager alloc] init];
}
}
return manager;
}
3、覆盖+ (id)allocWithZone:(NSZone *)zone;方法,防止直接调用alloc方法创建出新的对象
4、覆盖- (id)copyWithZone:(NSZone *)zone;方法,防止调用copy(返回静态实例)方法创建出新对象
5、覆盖release(不做任何操作),autorelease(返回静态实例)方法,防止对象的销毁
6、覆盖retain方法,返回静态实例
7、覆盖retainCount方法,直接放回UINT_MAX
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
OC学习篇的教程项目,每个项目都是可以单独运行的。很赞的~
从头到尾,教你如何理解OC,多练,多看,多理解,希望对你有帮助
本文档主要是对在 Object-C 阶段学习基础知识的总结,都是一些常用的知识点,很适合初学者
2020大学生线上(网院)学习总结篇.pdf
自己在开发和学习的过程中,总结了一些知识与资源,用来分享
ios block学习总结demo
《培训学习总结汇报》.pdf
《培训学习总结报告》.pdf
11医生岗前培训学习总结 .doc
《培训学习总结多篇》.pdf
2019年暑期教师学习总结范文.pdf
2021年高中数学远程教育学习总结.pdf
1.安装DockerToolbox,同时会附带安装Docker Quickstart Terminal、Kitematic (Alpha)、Oracle VM VirtualBox docker terminal界面如下,可进行常见docker命令操作。 Kitematic界面如下,用于管理容器下载。...
1.docker常用命令 docker search name,name为待下载image名称,可以查询官方仓库有哪些镜像 docker pull name,name为image名称,示例:docker pull ubuntu docker images,查看已下载的image ...
10、OC门,即集电极开路门电路(为什么会有OC门?因为要实现“线与”逻辑),OD门,即漏极开路门电路,必须外界上拉电阻和电源才能将开关电平作为高低电平用。否则它一般只作为开关大电压和大电流负载,所以又叫做驱动...
Swift学习的笔记,总结性的东西,很实用,非常适合新手看,之前学过OC的朋友基本上一看就能上手,非常的实用。
《学校干部队伍作风整顿建设学习动员阶段工作总结》.pdf
文章目录Docker Stack概念命令Docker stack 实践实践环境实践过程部署一个简单服务添加监控visualizer滚动更新资源控制图形界面portainer安装前准备安装portainer Docker Stack 概念 技术由来:Docker Swarm在大规模...
我自学iOS开发时做的笔记,主要是OC语言的语法部分,没有包fundation框架,以我的亲身感受总结出iOS初学者容易犯的错误及疑问的地方,对本文如果意见欢迎与我交流,谢谢
学习OC中的Foundation框架的总结,包括NSObject,NSString,NSMutableString,NSArray,NSMutableArray