#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];
}
黑马程序员 oc对象的行为和内存分析,匿名对象,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/wtbkof/p/3714296.html