一、类和对象
对象的初始化 可以认为方法就是面向过程,实例就是面相对象
二、对象属性 属性可以认为是对象或类的特征,它表示对象的当前状态,他是供外界访问和设置用的。
对象先声明
nonamitic
assign c语言中的基本的额数据类型int、char、long等都可以用assign
retain
copy 练习:什么叫深 复制 /浅复制
readonly
默认的setter getter方法 主张用@property 早property中使用了retain那么在相应的dealloc方法中要将该成员变量release一次
-(void)setName:(NSString *)aName
{
if(_name != aName)
{
[_name release];
_name = [aName retain];
}
}
手动setter的好处 正确性校验,业务逻辑等
name = _name :_name是对外的也就使属性, name是对内的也就使成员变量
二、对象属性 属性可以认为是对象或类的特征,它表示对象的当前状态,他是供外界访问和设置用的。
对象先声明
nonamitic
assign c语言中的基本的额数据类型int、char、long等都可以用assign
retain
copy 练习:什么叫深 复制 /浅复制
readonly
默认的setter getter方法 主张用@property 早property中使用了retain那么在相应的dealloc方法中要将该成员变量release一次
-(void)setName:(NSString *)aName
{
if(_name != aName)
{
[_name release];
_name = [aName retain];
}
}
手动setter的好处 正确性校验,业务逻辑等
name = _name :_name是对外的也就使属性, name是对内的也就使成员变量
三、OC中的方法 类方法和实例方法 方法的声明 init alloc方法
四、面向对象的三大特征
封装:类封装了对象 属性封装了具体的实例变量
继承:从父类继承相应的非私有的方法,OC中没有私有方法,一次子类会继承父类的所有非私有的 变量和方法(对方法而言是所有的),继承协议的话,那么这个协议是要写在类里面的,
多态:
变量的方位权限
@private:
@protected:本类和子类都对其可见
@public:这个破坏了类的封装新,因此很少用
如果是系统的方法那么切记别忘了dealloc方法
[super dealloc]
确切的说OC中是没有重载的(因为冒号是方法中的一部分),它的重载叫做操作性多态(在一个类里面,)
重写(覆盖) 发生在父类和子类之间
虚函数:通过重写实现虚函数
多态:就是站在抽象的层面实施一个统一的行为,到个体(具体)的层面上时,这个统一的行为会因为个体(具体)的形态特征而实施自己的特征行为,总而言之,不同的个体对统一行为的反应是不一样的。
五、内存管理
alloc retain copy 要release
引用计数 控制权
autorelease
六、KVC KVO
KVC :将属性编码成相应的字符串,通过这个字符串的改变来通知....
KVO:当属性值发生变化时时,系统能监听到这个变化
注册监听者
实现监听
在dealloc中移除监听
通知:一对多,通知的对象必须存在,name(标识通知的名字),object(消息的发送者),dictionary(参数)
通知可以不在乎啊发送者是谁
传值
通多单例获取对象有
通知
单例
nsfilemanager
注册,post,移除
单例传值
代理传值
通知传值
blocks传值
七、类目延展和协议
代理传值
类目定义,使用
延展:伪私有
协议
类目定义,使用
延展:伪私有
协议
八、字符串和集合
九、文件操作
声明静态变量的地方:
.m定义静态变量
在方法里面声明
OC中存在对象初始化不成功的现象