笔记
2015-07-01 14:57
253 查看
iOS层次架构:
Cocoa Touch->Media->Core services ->Core OS
Cocoa Touch:创建IOS应用程序所需的关键框架
Media:图形技术 音频技术 和视频技术
Core Services:提供基础系统服务
Core OS:底层功能是很多其它技术的构建基础 通常情况下这些功能不会直接应用于应用程序
而是应用于其它框架
在编写代码时 应当尽可能地使用高层框架而不要使用底层框架 高层框架为底层框架构造提供面向对象地抽象
这些抽象可以减少需编写的代码行数 同时还对诸如Socket和线程这些复杂功能进行封装
从而让编写代码变得更加容易 虽说高层框架是对底层构造进行抽象 但是它并没有底层技术屏蔽起来
如果高层框架没有为底层框架的某些功能提供接口 开发者可以直接使用底层框架
由于Object-C的动态类型特征 Object-C不能对方法进行内联一类的优化 使得Object-C的应用程序比C或C++程序更小
由于Object-C使用动态运行时类型 而且所有的方法都是函数调用 很多常见的编译时性能优化方法都不能用于
Objective-C 例如内联函数 常数传播 交互式优化 纯量取代 和聚集等 这使得Objective-C性能劣于类似的对象抽象语言
Objective—C属性特性:
assign:指定setter 方法简单负值 不更改索引计数 使用assign 对基础数据类型和C数据类型
retain:释放旧的对象 将就对象的负值输入对象 再提高输入对象的索引计数为1 使用retain
对其它NS Object和其子类 retain说明属性再负值的时候 先release之前的值再赋新值给属性 引用再加1
copy:基本上像retain但没有增加引用计数
readonly:将生成getter方法而不是生成setter方法
readwrite:默认属性 将生成不带额外参数的getter 和setter方法
atomic:对于对象的默认属性 就是setter/getter生成的方法是一个院子操作
nonatomic:不保证setter/getter的院子行 多线程情况下数据可能会有问题
Objective-c 种所有释放都必须写在[super dealloc]的前面
-------错误的写法--------
- (void)dealloc
{
[super dealloc];
[XXX release];
......
}
-------正确的写法--------
- (void)dealloc
{
[XXX release];
[super dealloc];
......
}
原因是 你所创建的每个类都是从父类 根类继承来的 有的很多实例变量也会被继承来 这部分有时候会在程序中使用 它们不会自动释放内存 你需要调用父类的dealloc 来释放 然后在此之前必须把自己所写类种的变量内存先释放掉 否则会造成本类中的内存积压 造成内存泄露
使用ARC后几不需要手动释放~~~
ARC中dealloc 虽然可以被重载 但是不能调用[supper dealloc]
Objective-c中的对象 有强参照和弱参照之分 当需要保持其他对象的时候 需要retain以确保对象引用计数加1
对象的持有者owner只要存在 那么该对象的强参照就一直存在
对象的处理基本规则是:
只要对象的持有者存在(对象被强参照) 那么就可以使用该对象
对想失去了持有者后 即被抛弃 http://justcoding.iteye.com/blog/1391548 http://www.cnblogs.com/flyFreeZn/p/4264220.html
Cocoa Touch->Media->Core services ->Core OS
Cocoa Touch:创建IOS应用程序所需的关键框架
Media:图形技术 音频技术 和视频技术
Core Services:提供基础系统服务
Core OS:底层功能是很多其它技术的构建基础 通常情况下这些功能不会直接应用于应用程序
而是应用于其它框架
在编写代码时 应当尽可能地使用高层框架而不要使用底层框架 高层框架为底层框架构造提供面向对象地抽象
这些抽象可以减少需编写的代码行数 同时还对诸如Socket和线程这些复杂功能进行封装
从而让编写代码变得更加容易 虽说高层框架是对底层构造进行抽象 但是它并没有底层技术屏蔽起来
如果高层框架没有为底层框架的某些功能提供接口 开发者可以直接使用底层框架
由于Object-C的动态类型特征 Object-C不能对方法进行内联一类的优化 使得Object-C的应用程序比C或C++程序更小
由于Object-C使用动态运行时类型 而且所有的方法都是函数调用 很多常见的编译时性能优化方法都不能用于
Objective-C 例如内联函数 常数传播 交互式优化 纯量取代 和聚集等 这使得Objective-C性能劣于类似的对象抽象语言
Objective—C属性特性:
assign:指定setter 方法简单负值 不更改索引计数 使用assign 对基础数据类型和C数据类型
retain:释放旧的对象 将就对象的负值输入对象 再提高输入对象的索引计数为1 使用retain
对其它NS Object和其子类 retain说明属性再负值的时候 先release之前的值再赋新值给属性 引用再加1
copy:基本上像retain但没有增加引用计数
readonly:将生成getter方法而不是生成setter方法
readwrite:默认属性 将生成不带额外参数的getter 和setter方法
atomic:对于对象的默认属性 就是setter/getter生成的方法是一个院子操作
nonatomic:不保证setter/getter的院子行 多线程情况下数据可能会有问题
Objective-c 种所有释放都必须写在[super dealloc]的前面
-------错误的写法--------
- (void)dealloc
{
[super dealloc];
[XXX release];
......
}
-------正确的写法--------
- (void)dealloc
{
[XXX release];
[super dealloc];
......
}
原因是 你所创建的每个类都是从父类 根类继承来的 有的很多实例变量也会被继承来 这部分有时候会在程序中使用 它们不会自动释放内存 你需要调用父类的dealloc 来释放 然后在此之前必须把自己所写类种的变量内存先释放掉 否则会造成本类中的内存积压 造成内存泄露
使用ARC后几不需要手动释放~~~
ARC中dealloc 虽然可以被重载 但是不能调用[supper dealloc]
Objective-c中的对象 有强参照和弱参照之分 当需要保持其他对象的时候 需要retain以确保对象引用计数加1
对象的持有者owner只要存在 那么该对象的强参照就一直存在
对象的处理基本规则是:
只要对象的持有者存在(对象被强参照) 那么就可以使用该对象
对想失去了持有者后 即被抛弃 http://justcoding.iteye.com/blog/1391548 http://www.cnblogs.com/flyFreeZn/p/4264220.html
相关文章推荐
- SVN服务器搭建和使用(二)
- ligerui前端框架API地址
- C语言--基础002--for循环
- androidのDOM方式解析XML
- sed正则表达式
- CASIO 5800P计算器游戏--猜数字游戏
- 适配器模式
- hadoop2.X使用手册1:通过web端口查看主节点、slave1节点及集群运行状态
- shell变量说明
- Win10如何自动切换桌面壁纸让每时每刻都不一样
- 斯坦福大学ios公开课课程源代码下载地址
- java 面向对象 7_1
- java基础之异常
- 有关UIView、subview的几个基础知识点-IOS开发 (实例)
- Xcode删除多余证书
- 7个鲜为人知却非常实用的PHP函数
- 简单好用的General开发框架
- 使用Eclipse+NDK编译arm64-v8a CPU架构的speex.so文件
- Swift学习三
- 【转载】python 中的 and、or、and-or