首页 > 代码库 > 黑马程序员 oc对象的行为和内存分析,匿名对象

黑马程序员 oc对象的行为和内存分析,匿名对象

#import <Foundation/Foundation.h>

@interface Car : NSObject

{

  @public

   int speed;

   int wheels;

}

// oc方法必须是-开头

// oc方法中所有的数据类型必须得用括号括起来

// oc方法中的()就是用来扩住数据类型的

-(void)run;

@end

@implementation Car

- (void)run

{

    NSLog(@"%d个轮子和速度为%d的车子跑起来了!");

}

@end

int main()

{

    // 当Car做了个new行为就是创建了一个新对象,并返回对象本身,返回一个内存地址,所有的属性初始化,并且值为0,而这个对象所拥有3个属性为speed,wheels,isa。isa来源于基类即NSObject

    Car *car = [Car new];

    car->speed = 250;

    car->wheels = 4;

    [Car new]->speed = 300;

    // 我们知道输出的是速度为0的车子跑起来了,这是为什么呢?因为[Car new]代表重新创建了一个对象,它的成员变量都为0,所以使用匿名对象要慎重,最好不用

    NSLog(@"速度为%d的车子跑起来了",[Car new]->speed);

    // 向car所指向的对象发送一个run消息,实质上是把run方法包装成一个SEL数据,通过isa指针从类中找到与之相应的SEL数据获取方法地址,通过方法地址调用方法,这里存在缓存,当下次再通过SEL数据寻找时,会从上次结果中寻找

    [car run];

}