Object - C基础篇(-)
什么是协议
是一种语法 像现实中的 劳动协议 等
规范接口 实现对象之间的通信
只是声明方法 遵守协议的类 来实现
方法有 必须实现 和不必须实现两种
常用于 代理 深浅拷贝 归档(NScoding) 规范接口
不同的类 想做相同的事情 常用协议规范他们的行为 进而达到规范接口的目的
oc没有多继承 所以用协议
比如 以后公司里 代码的封装 不同的类 常用 协议规范
arc
1.ios5之后 出现的 一种 内存自动管理机制*(还会自动检测 数据类型)
不需要 像以前一样 通过 retain 使引用计数器
+1,或者手动添加release使引用计数器减一
或者 AUtolease
不能显示调用 deleaoc
retain/copy
使用copy必须遵守NScoping协议
retain 使对象引用计数器+|
assign直接赋值 不会是对象引用计数器加减
autorelease把对象的地址 放到离他最近的 自动释放池里 延时释放
dealloc 对象的引用计数器减为0的时候 自动调用 dealloc
、、、、、、、、、、、、、
self.name =XX是一个set方法 可以KVO监听(set/kvc)内部考虑内存管理
_name只是一个简单的变量赋值,在ARC下要考虑内存 ,因为默认这是一个强引用指针
类别
升级一个类、给原有的类增加方法 2不能增加属性
3继承 父类所有的方法和属性(包括父类用类别增加的方法也能继承)
strong weak
是ARC的语法,weak 弱引用指针 weak 指向的对象 可以直接赋值,而且 一旦这个对象被销毁,weak修饰的指针置为nil
strong 是强引用指针,会使引用计数器 自动加+1
weak/asign
1都有直接赋值的意思
2weak 是修饰弱引用指针的,是ARC的语法。asign在ARC和MRC下都能用,ARC下只能修饰一些基本数据类型,MRC下也可以是修饰弱引用对象地址。
混编
在工程target设置中
arc -fno-objc-arc
-fobjc-arc
o-c多继承
用协议代替但 本质是没有多继承的,只是可以遵守多个协议,也能有继承多个类的效果,
实现多个协议方法,进而有多继承的效果,只是类比,但没有毛线的关系。
o-c有没有私有变量,和私有方法,如果没有 怎么实现
成员变量默认是protect的 受保护的,也可以修饰成私有的provate,
但是 没有私有方法
在声明部分不声明(或者在类的匿名类别中声明) 在类的实现部分 实现,实现私有的效果,但是本质是没有私有方法的,因为可以用选择器进行访问,这就是o-c的动态机制,根本没有真正的私有
#include#import@class
#import不用添加条件编译#include必须要条件编译 防止头文件多次被包含导致重复定义
@class前向引用申明,目的是防止,相互包含,告诉编译器,我后面会声明,现在这里定义一下,请放行。
只copy 对象引用 ()归档时深拷贝
MVC 框架设计模式好几十了,现在c层过重,降低了编辑效率,所有有一种编辑叫 MVVM
是对象独立化 代码复用 增强健壮性 降低软件成本
观察者模式
通知,KVO