52个有效方法(1)

Objective-C语言使用的是"消息结构"而非"函数调用"

"消息结构"和"函数调用"之间的区别

//Messaging (Objective-C) 消息结构
    Object *obj = [Object new];
    [obj performWith:parameter1 and:parameter2];
    
//Function calling (C++)方法调用
    Object *obj = new Object;
    obj->perform(parameter1,parameter2);

内存模型:Objective-C语言中的指针是用来指示对象的

NSString *someString = @"the string";
/**说明:
上面代码是声明一个名为someString的变量,类型是NSString *。看就是说,此变量为指向NSString的指针。
Objective-C对象所占内存分配在“堆空间”中,绝对不会分配在“栈”上。
所以someString变量指向分配在堆里的某块内存,其中含有一个NSString对象。
*/
//再创建一个变量,令其指向同一地址,那么并不拷贝对象,只是这两个变量会同时指向此对象
NSString *anotherString = someString;

/**说明:
两个NSString *类型变量指向一个NSString实例。
当前“栈帧”里分配两块内存,每块内存大小都能容下一枚指针。(在32位架构计算机是4字节,64位架构计算机是8字节)。这两块内存里的值都一样,都是NSString实例的内存地址。
*/

两个变量指向同一NSString实例的内存地址

struct CGRect {
    CGPoint origin;
    CGSize size;
};
typedef struct CGRect CGRect;

要点

52个有效方法(1)

全文结束