------- ios培训android培训java培训、期待与您交流! ----------

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

-----------黑马程序员 IOS培训、Android培训、Java培训、期待与您交流----------------

#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];

    return 0;

}

posted on 2014-05-07 17:43  wtb  阅读(210)  评论(0编辑  收藏  举报

导航

------- ios培训android培训java培训、期待与您交流! ----------