天天看点

object-C语言特性(一)

Object-C 语言使用”消息结构“而非函数调用。该语言是由Smalltalk演化而来,后者是消息型语言的鼻祖。

关键区别在于:使用消息结构的语言,其运行时所执行的代码由运行环境所决定;而使用函数调用语言,由编译器决定。

Object-C语言对象所占的内存总是分配咋堆空间(heap space),绝对不能分配到栈中。

如可以这样写:

NSString *string1 = @"string";
NSString *string2 = [[NSString alloc]initWithCString:"string " encoding:NSStringEncodingConversionAllowLossy];
           

而不能这样写:

NSString string3;
           

有时会遇到 不含*的变量,可能会使用栈空间,这些不是Object-C 对象。 如:

CoreGraphics框架中的CGRect

CGRect frame;
frame.origin.x=f;
frame.origin.y=f;
frame.size.width=f;
frame.size.height=f;
           

起结构体定义:

struck CGRect{
    CGPoint origin;
    CGSize size;
};
           

Object-C将堆内存管理抽象出来,不需要malloc和free来分配或释放内存。运行期环境把这部分工作抽象为一套内存管理架构,名叫”引用计数“;

参考《编写高质量IOS与OSX代码的52个有效方法》