OC是C语言的超集,使用了面向对象的特性。OC使用消息结构(messaging structure)而非方法调用(function calling),区别在于,消息结构在运行时决定执行的代码,而方法调用,由编译器决定。
OC使用引用计数机制,熟悉C的内存模型有助于了解OC的内存管理。
OC的对象都是声明在堆(heap)中,写法: NSString *somgString = @"The string"; 在栈(stack)中声明是不合法的, NSString someString;
区别:堆通常由程序员分配,而栈由编译器分配
OC的内存管理已经抽象出来,叫作引用计数(reference counting),不须要程序员去malloc和free。
有些OC的变量(非对象)是使用栈空间的,好比:CGRect,至关于C的结构体。由于频繁地建立释放OC的对象,会影响性能。程序员
在类的头文件中尽可能少引入其余头文件,这样作能够尽量的减小编译时间,并减小相互依赖。此时,使用向前声明(forward declaration)。
有些状况,好比声明遵循某个协议,首先考虑把这些协议声明移到class-continuation分类中,其次或放置到一个单独的只包含协议的头文件中。性能