include、import、@class的区别
include是C语言的导入,编译时会导入多次,可通过一些指令减少重复导入
import是OC预约的导入,苹果底层已经处理,仅仅导入一次
@class是引入这个类名字,并没有链接导入这个类的属性和方法
什么是框架
框架是一系列指令集和方法的结合,组成一个库,如Foundation框架
C语言字符和OC字符串
"",@""OC字符串是对象@
将.m文件如何转为.c和.cpp文件
这个步骤可用于了解苹果底层实现 如block、类的本质,分类的本质
cclang -rewrite-objc main.m -o main1.c
static、const关键字
static定义变量存在全局区,不能运行时赋值,因此必须初始化或者为nil
const修饰全局变量叫 全局常量,不可修改
int a = 10;
const int *p = &a;; //常量指针 值不可修改,引用指向可改
int a = 10;
int * const p = &a;//指针常量,指向不可改,指向的值可改
简述NULL和nil
都宏定义为0,指向内存为0的空间
一个C语言的,
OC的类,OC类置nil,发送消息不会闪退。空指针了解下。
但是获取公开的成员变量会导致crash
演示一下try_catch不能处理所有的异常
Perspon *p = nil;
@try {
p->_score = @"";
} @catch (NSException *exception) {
NSLog(@":exception%@",exception);
}
反射机制几种用法
反射概念
概念:是程序在运行期间根据类的名称动态获取类的信息,动态的创建类以及动态调用类的方法
应用:根据需要创建某个对象,
判断类是某个类的子类 或者类本身
对象方法是否能够响应
协议是否遵循
类的判断:
-(BOOL)isKindOfClass:(Class)aClass;//判断类是否是某个类或者某个子类的实例
-(BOOL)isMemberOfClass:(Class)aClass;//
方法响应:
-(BOOL)respondsToSelector:(SEL )aSelector;//判断对象是否实现这个方法
-(BOOL)conformsToProtpcol:(Protocol *)aProtocol;//判断当前对象是否遵从某个协议
方法选择器和字符串转换:NSStringFromSelector(SEL aSelector),NSSelectorFromNSString(NSString *aSelectorName)
类和字符串的转换:NSStringFromClass(Class aclass),NSClassFromNSString(NSString *aClassName)
网友评论