1.动态机制的特点:
静态分配在编译和链接时确定内存大小,在运行过程中不能改变,
动态分配克服了这个限制,但仍存在很多限制,如:
编译时期的类型匹配,程序的边界地址在链接时期必须确定,应用程序的每个部分必须组织成一个单独的可执行文件,运行时不能加入新的模块和类型。
oc基本克服了这些限制,把很多编译时期的需要做的决定放到运行时做,
动态加载:没有面向对象时,程序被链接成一个执行文件,在运行时一次性加载到内存,动态加载指程序各个部分被动态链接在一起,容许运行后按需动态加载和链接不同的文件,
2.动态机制意义:程序可以不需一次开发完成,扩展性,对已有的程序加入新功能
3.有关类的问题
问题(1):对象是否为class-object或其子类的成员
方法:-(BOOL) isKindOfClass:class-object
注意:class-object是根据类名或一个对象生成一个class-object,可以发送class消息
问题(2):对象是否为class-object?
方法:-(BOOL) isMemberOfClass:class-object
问题(3):类是指定类的子类么?
方法:+(BOOL) isSubclassOfClass:class-object
问题(4):对象是否能响应selector方法?
方法:-(BOOL) respondsToSeletor:selector
注意:@selector指令:为某个方法生成一个SEL值
4.异常处理机制
@try {
[f nosuchMethod]; //[对象名 方法]
}
@catch (NSException * e) {
NSLog(@"\nname:%@\nreason:%@\n", [e name], [e reason]);
}
@finally {
NSLog(@"finally"); //此处可以不写,但不管有没有异常,finally都会运行
}