Objective-C中的类学习第一篇

1.类的设计:

  1> 类名(第一个字母大写,不要用下划线)

  2> 属性

  3> 行为(功能)

//因为使用了NSObject

#import<Foundation/Foundation.h>

/*

  类名:Car

  属性:轮胎个数,速度

  行为:跑

 */

//类的声明

//用来声明对象的属性和行为

//:NSObject 目的是:让Car这个类具备创建对象的能力

@interface Car : NSObject

{//用来声明对象属性

    @public

    //int wheels = 4;不允许在这里初始化

    //static int wheels;不允许随便讲成员变量当做C语言中的变量来使用

    int wheels;//轮胎个数

    int speed;//时速(km/h

}

//方法(行为):方法名、参数、返回值

//只要是OC对象的方法,必须以减号 - 开头

//OC方法中任何数据类型都必须用小括号()扩住

//OC方法中的():括住数据类型

//方法是方法,不是函数,不可以使用static等来修饰。

- (void) run;


@end

//类的实现

@implementation Car

//方法的实现(说清楚方法里面有什么代码)


- (void)run

{

    NSLog(@"车子跑起来了!");

}


@end


int main()

{

    //OC中,想执行一些行为/方法,就写上一个中括号[行为执行者 行为名称]

    

    //利用类来创建对象

    //执行了Car这个类的new行为来创建新对象

    

    //定义了一个指针变量pp将来指向的是Car类型的对象

    //[Car new]每次都会创建出一个新的对象,并返回新对象的地址

    Car *p = [Car new];

    

    Car *p2 = [Car new];

    p2->wheels = 5;

    p2->speed = 300;

    

    //p所指向的对象的wheels属性赋值

    p->wheels = 4;

    p->speed = 250;

    

    //p所指向的对象发送一条run消息

    [p run];

    

    NSLog(@"车子有%d个轮子,时速:%dkm/h",p->wheels,p->speed);

    return 0;

}



以上这些是学习OC时做的一些笔记,包含了一些基础知识以及错误须知。

下面对于类对象的内存分配中的一个易错点举个小例子

@interface Car : NSObject

{

    @public

    int wheels;

    int speed;

}


-(void) run;

@end


@implementation Car


-(void)run

{

    NSLog(@"%d个轮子的车子,以速度%d km/h行驶",wheels,speed);

}


@end

void test(int w,int s)

{

    w = 20;

    s = 300;

}

void test1(Car *newC)

{

    //newC这个指针修改了c这个对象所在地址中对应的值

    newC->wheels = 5;

}

void test2(Car *newC)

{

    Car *c2 = [Car new];

    c2->wheels = 5;

    c2->speed = 200;

    

    //此时,newC指向了新的对象c2

    newC = c2;

    //所以这个时候,newC修改的是c2中的wheels的值,而不是c中的值,c对象并未受影响

    newC->wheels = 6;

}

int main()

{

    Car *c = [Car new];

    c->wheels = 4;

    c->speed = 100;

    

    //test(c->wheels,c->speed);    //此时只是传入了c指向的对象中的wheelsspeed的值,等同于test4100)。

    //test1(c);

    test2(c);

    

    [c run];

    return 0;

}

test 的结果是4个轮子的车子,以速度100 km/h行驶

test1的结果是5个轮子的车子,以速度100 km/h行驶

test2的结果是4个轮子的车子,以速度100 km/h行驶


posted @ 2015-01-17 21:37  SarielTang  阅读(106)  评论(0编辑  收藏  举报