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. 异常处理

  1. @try
  2. { /*code*/ }
  3. @catch(NSException *ex)
  4. { /*code*/ }

数据类型

新增数据类型
1)BOOL typedef signed char BOOL (YES / NO )
2)Boolean typedef unsigned char (true / false )
3)id类型 万能指针
4)sel 方法选择器
5)block 代码段