码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-C - 方法的声明和实现

时间:2015-04-18 11:35:06      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:声明   objective   方法   方法与函数   对象方法   

方法与函数


/*
 方法
 1.对象方法都是以减号 - 
 2.对象方法的声明必须写在@interface和@end之间
   对象方法的实现必须写在@implementation和@end之间
 3.对象方法只能由对象来调用
 4.对象方法归类\对象所有

 函数
 1.函数能写在文件中的任意位置(@interface和@end之间除外),函数归文件所有
 2.函数调用不依赖于对象
 3.函数内部不能直接通过成员变量名访问某个对象的成员变量

 */

#import <Foundation/Foundation.h>

@interface Person : NSObject
@end

@implementation Person
@end

@interface Car : NSObject
{// 成员变量\实例变量
    //int wheels = 4; 不允许在这里初始化
    //static int wheels; 不能随便将成员变量当做C语言中的变量来使用
    @public
    int wheels;
}

- (void)run;
- (void)fly;
@end

int main()
{
    // wheels = 10;
    /*
    Car *c = [Car new];
    c->wheels = 4;
    //run();

    [c run];
    */

    void test2();

    test2();

    return 0;
}

@implementation Car

- (void) fly
{

}

/*
void test2()
{
    NSLog(@"调用了test2函数-%d", wheels);
}*/

void test()
{
    NSLog(@"调用了test函数");
}

- (void)run
{
    test();
    NSLog(@"%d个轮子的车跑起来了", wheels);
}
@end

方法的声明和实现

#import <Foundation/Foundation.h>

/*
计算器类
 方法:
 1> 返回 π 
 2> 计算某个整数的平方
 3> 计算两个整数的和
*/

@interface JiSuanQi : NSObject

// 方法名:pi
- (double)pi;

// OC方法中,一个参数对应一个冒号
// 方法名:pingFang:(冒号也是方法名的一部分)
- (int)pingFang:(int)num;

//- (int)sum:(int)num1 :(int)num2;
// 方法名:sumWithNum1:andNum2:
- (int)sumWithNum1:(int)num1 andNum2:(int)num2;


//- (int)sumWithNum1:(int)num1 andNum2:(int)num2 andNum3:(int)num3;
@end

@implementation JiSuanQi

- (double)pi
{
    return 3.14;
}

- (int)pingFang:(int)num
{
    return num * num;
}

//- (int)sum:(int)num1 :(int)num2
- (int)sumWithNum1:(int)num1 andNum2:(int)num2
{
    return num1 + num2;
}
@end

int main()
{
    JiSuanQi *jsq = [JiSuanQi new];


    int a = [jsq sumWithNum1:20 andNum2:5];
    //int a = [jsq sum:10 :5];

    //int a =  [jsq pingFang:10];

    //double a = [jsq pi];
    NSLog(@"%i", a);

    return 0;
}

设计方法

/*
设计一个方法,用来和其他车比较车速,返回车速的差距
 */

#import <Foundation/Foundation.h>

@interface Car : NSObject
{
    @public
    int speed;
}

- (int)compareSpeedWithOther:(Car *)other;

@end

@implementation Car

- (int)compareSpeedWithOther:(Car *)other
{
    // speed
    // other->speed
    // 返回当前这辆车和other这辆车的速度差距
    return speed - other->speed;
}

@end

int main()
{
    Car *c1 = [Car new];
    c1->speed = 300;

    Car *c2 = [Car new];
    c2->speed = 250;

    int a = [c1 compareSpeedWithOther:c2];

    NSLog(@"a=%d", a);

    return 0;
}

匿名对象

@interface Car : NSObject
{
    @public
    int speed;
}
- (void)run;
@end

@implementation Car

- (void)run
{
    NSLog(@"速度为%d的车子跑起来了", speed);
}

@end


int main()
{
    /*
    Car *c;
    c = [Car new];
    c->speed = 250;

    [c run];*/

    // 不要写类似匿名对象这样的代码
    // 只要求能说出输出结果
    [Car new]->speed = 300;

    [[Car new] run];

    //Car *c = [Car new];

    return 0;
}

Objective-C - 方法的声明和实现

标签:声明   objective   方法   方法与函数   对象方法   

原文地址:http://blog.csdn.net/wangzi11322/article/details/45111163

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!