//联系人:石虎QQ: 1224614774昵称:嗡嘛呢叭咪哄
Day01
01-分类与继承的区别
分类:增加方法,不能增加变量.但是可以访问类的变量
继承:子类继承了父类所有的方法和变量
继承能增加变量和方法,分类只能增加方法,不能增加变量.
继承会产生一个新的类.
分类不会产生新的类.同名的方法,分类里面优先调用
02-分类与类扩展的区别
类扩展:可以添加属性声明,添加的方法声明,匿名的分类
分类不能添加属性,只能添加方法
Day02
//retain mrc strong arc
01-展开:@property(nonatomic,retain) NSArray *cars;
getter方法:
-(NSArray *)cars{
return_cars;
}
setter方法:
-(void)setCars:(NSArray *)cars{
if(_cars = !cars){
[_cars release];
_cars = [cars retain];
}
}
-(void)dealloc{
[superdealloc];
// [_cars release];
_cars =nil;
}
02-NULL,nil,Nil, NSNull
nil是对objective c对象赋空值为了避免野指针对指针赋值一个nil
Nil:表示对类进行赋空值
NULL:用于对非对象指针赋空值,比如C指针
NSNull集合里的空对象
对于像NSArray这样的类型,nil或NULL不能做为加到其中的Object,如果定义了一个NSArray,为其分配了内存,又想设置其中的内容为空,则可以用[NSNULL null】返回的对象来初始化NSArray中的内容初始化内容为空
Day03
写一个代理
Day04
写一个代理
Day05
weak和strong的区别,都是啥时候用?
Day07解释@selector和SEL的含义和作用
@selector对方法进行包装
SEL是一个数据类型.每一个方法都有一个isa指针
[selfrun]
Day08程序启动的过程
0.main函数入口
1.创建UIApplication对象,创建代理对象,设置两者的代理关系
2.开启消息循环
3.加载plist文件,看里面有没有指定storyboard,如果指定了,创建UIWindow对象.加载storyboard文件.根据storyboard里面箭头指向的控制器,创建控制器对象,并且设置成window的根控制器,创建控制器的view,显示到window上并且展示出来
没有storyboard,就需要在程序启动完成以后的代理函数里面写代码创建widow对象,创建控制器设置成window的根控制器,展示window
Day09数据怎么存储,有几种方式
偏好设置
xml xml文件或者plist文件
NSCoding
sqlite
Core data
Day10对内存管理的理解
MRC
引用计数器
alloc new (mutable)copy retain +1
relese autorelease -1
苹果官方的内存管理原则:
1.谁创建或者retain,谁释放
2.alloc new (mutable)copy retain ,就会要对应一个
relese autorelease
dealloc对象被销毁的之前,调用
ARC
强指针对象有强指针指向,就不会被释放
弱指针
循环引用问题