OC的一些封装
NSLog
NSString
#import
OC 与 C
oc 完全兼容 c
关键字
@inferance
@implement
@end
代理模式 delegate
1. 基础语法&&与C/C++的对比&&杂
a.import
b.NSLog / NSString
c. 数据类型 :
- BOOL(YES/NO)
- BOOL(true/false)
- class
- id
- nil
- block
2. 面向对象
复习下类的三要素:封装、继承、多态
oc 的类、接口、协议
oc 的类声明 @inferance
oc 的类实现 @implement
如何理解oc 的声明和实现?对比C++?(类似.h 和.cpp) 一个是声明,一个是实现,但是为什么oc的实现中可以增加没有声明的属性和方法?[oc 实现中不能增加声明中没有的属性]
oc 的虚基类 @protocol
类的成员属性 @property
类方法用+声明,对象方法用-声明
oc 多态实现方式
oc : 对象的创建
Class cl = [Class new];
Class cl = [ [Class alloc] init];
2.3 类加载
复习下内存五大区
- 堆
- 栈
- 数据段
- 代码段
inferance在代码段,第一次访问时加载
实例指针在栈、实例在堆中、
实例中有个isa指针指向代码段中的类
方法在代码段中
2.4 协议 protocol
a. protocol用于声明方法,只要一个类遵守这个协议,那他就有了这个协议里所有方法的声明
b. 类似java的接口,C++的虚基类
c. 协议只能声明方法,不能声明属性
d. 不实现协议的方法不报错,但调用协议的方法必报错
e. 语法 @interfance 类名 : 父类名 <协议名>
f. 协议可以多遵守
g. 协议声明的方法有 @require 和 @optional 两种
h. require 不实现编译时不会报错
i. protocol 之间可以继承 ,语法:protocol 协议名<父协议名>
3. Xcode 项目相关
a. 类文件不能跨 tarrget 访问
4. 异常处理
@try
{ /*code*/ }
@catch(NSException *ex)
{ /*code*/ }
数据类型
新增数据类型
1)BOOL typedef signed char BOOL (YES / NO )
2)Boolean typedef unsigned char (true / false )
3)id类型 万能指针
4)sel 方法选择器
5)block 代码段