1. #import的作用
#import 防止头文件重复保函
2.面向对象和面向过程的区别
面向过程:注重的是解决问题的步骤
面向对象:关注的是解决问题的去要那些对象
3.对象和类方法的区别
对象:以减号开头
只可以被对象调用,可以访问成员变量
类:以加号开头
只能用类名调用,对象不可以调用
类方法不能访问成员变量
4.self 与 super区别
self代表着当前方法的调用者
super是一个编译指令可以直接调用当前父类方法
当前类的父类的调用者
super在类方法中,它就代表了调用当前类方法的类的父类,如果在对象方法中,它就代表调用当前对象方法的对象的父类对象
5.继承和多态
当调用方法时,首先检测子类有没有实现这个的方法,如果子类没有重写这个方法,就会调用父类的方法
重写:子类重新实现父类的方法
6.多态:多态就是某一类事物的多种形态.多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作
7.点语法就是用来调用set和get的方法
8.@property 和 @syntheesize —-森的赛
Xcode 4.4前:自动生成set和get声明方法
Xcode 4.5后:自动生成set和get的声明和实现方法 在.m文件中生成下划线开头的成员变量
在Xcode 4.4前自动生成set和get方法的实现
在Xcode 4.4可以不写
9.内存管理
管理范围:任何继承于 NSObject的对象
原理:
每一个对象都有引用计数器
当使用alloc new 和 copy创建对象时引用计数器被设置为1
给对象发送一条retain消息 ,引用计数器加1 —
给对象发送一条relrase消息,引用计数器会减1
计数器为0时,对象会被回收
只要用alloc new创建新对象,那么你就有责任做一次release
不可以再操作已经被释放的对象,不然会发生野指针错误
在对象释放前操作对象
你想使用某个对象,就应该放对象的计数器+1
你不想使用某个对象,就应该让对象的计数器-1
成员变量内存管理(如果成员变量是对象,才需要管理)
哪里有 alloc new 哪里有 release
release 旧对象
retain新对象
dealloc 方法就是释放当前拥有的所有对象
nonatomic:性能高 多线程不加锁 —诺米拖米克
atomic 性能低,多线程加锁 -啊拖你克
autorelease 会将对象放到一个自动释放池中
当自动释放池被销毁,会将池里的所有对象的一次release操作
10.分类(category)在不改变类的情况下给一个类动态添加方法,可以访问原来的成员变量和方法,但不可以添加成员变量 ——开地格瑞
继承有: 封装 继承 多态 子类继承父类的属性和行为
11.协议protocol —泼提科了
遵守某个协议,只要遵守这个协议,就就相当于拥有了这个协议里面所有的方法和声明
@pequired是必须实现 —瑞快额特
@optional 可以选实现 —哦破神no
分类和协议只能声明方法,不可以声明变量
NSObject是基类协议
12.block的作用:封装代码,用来保存一段代码
block 内部可以访问外面的变量
默认情况下,block 内部不能修改外面的局部变量
给局部变量加上_block,这个局部变量就可以在block内部改变
13.@class 和 #import的区别
@class做一个简单的声明,并不包含 类方法的声明和成员变量的声明
@import 是把整个类的所有声明都拷贝一份
@import和@class同时在.h 和 .m中可以解决循环依赖的问题
循环retain
两个类相互包含,就会出现无法释放的问题 一边用retain 另一边用assign
15.static 修饰局部变量时增加生命周期,在程序退出时才会销毁 —死带地科
|
|