运行时态:运行时从我们程序生命周期开始:(application: didFinishLaunchingWithOptions:),主线程开启,整个程序开始运行
语言特性:
1.静态语言:C语言等,特性是:静态语言的类型决定是在编译时
int number = 12;
2.动态语言:OC语言等,特性是:动态语言的类型决定是在运行时
id number = [[NSNumber alloc]init];
运行时态才用kvc获取对象的成员属性
OC里面传对象其实就是传递指针
OC是一门动态语言,类型决定在运行时,OC的所有对象在运行时中什么?
原则:OC语言是C语言的拓展 ——>可能OC的对象在运行时候就是C语言.
对象:
oc的对象在运行的时候,都是一个C的结构体,这个结构体的类型叫做 objc_object
struct objc_object {
Class isa // isa指针指向对象的类;
};
运行时才决定类型 :是因为在运行的时候是一个c的结构体,这个结构体有一个isa指针指向对象的类,所以它才会从运行时中确定类型
类:
oc的类在运行的时候,也是一个C的结构体,这个结构体的类型叫做 objc_class
struct objc_class {
Class isa ;
Class super_class ;
const char *name ;
long version ;
long info ;
long instance_size ;
struct objc_ivar_list *ivars;
struct objc_method_list **methodLists ;
struct objc_cache *cache;
struct objc_protocol_list *protocols;
}