天天看点

iOS基础之OC:OC对象方法

IOS基础之OC:OC对象方法

一个类的三要素:类名、属性、行为(方法)

代码里面写的方法,其实就是对某一个类进行行为的描述

 方法的定义:

        -(void)方法名;

 方法的实现:

        -(void)方法名{

            方法体;

        }

 方法它本质上就是函数,方法很多的用法跟函数一样

 函数分为无参无返回值的函数、有参无返回值的函数、有参有返回值的函数、无参有返回值的函数,方法也分这几种

 1.无参无返回值的函数:

        void  函数名();

方法的: -(void)方法名;

使用方法:

   函数用法:

         函数名();

    方法用法:

         [对象名 方法名];

 注意:1.方法的声明只能写在@interface和@end之间(不包括大括号里面)

            2.方法的实现只能写在@implementation和@end之间

-----------------实例代码-----------------

#import <Foundation/Foundation.h>

-----方法的声明-----

@interface Person : NSObject{

    @public   //不加public外面调用不了

    NSString *_name;

    int _age;

}

-(void)run;

@end

-----方法的实现-----

@implementation Person

-(void)run{

    NSLog(@“你好,小明");

}

@end

-----主函数-----

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //调用方法之前一定要new一个对象

        Person *p = [Person new];

        [p run];//对象名 方法名      

    }

    return 0;

}

2一个参数的情况:

    定义的语法:

            -(void)方法名:(参数类型)参数名;

    实现的语法:

            -(void)方法名:(参数类型)参数名{

                 方法体;

            }

    调用的语法:

            [对象名  方法名:实参值];

    注意:如果有参数的话,冒号也属于方法名

 两个参数的情况:

        定义的语法:

                -(void)方法名:(参数类型)参数名 :(参数类型)参数名2;

        注意:1、有空格!

                   2、为了增强方法的可读性,一般在后面的参数里面,还会写一些方法的名(必须加)

             例: -(void)方法名1:(参数类型)参数名 方法名2:(参数类型)参数名2;

        实现的语法:

                -(void)方法名:(参数类型)参数名 :(参数类型)参数名2{

                    方法体;

                }

        调用:

            [对象名  方法:参数1 :参数2];

 N个参数的情况:

            -(void)方法名:(参数类型)参数名1 方法名2:(参数类型)参数名2 方法名3:(参数类型)参数名3 方法名n:(参数类型)参数名n;

 注意:方法名是包含冒号的!

-----------------实例代码-----------------

#import <Foundation/Foundation.h>

-----方法的声明-----

@interface Person : NSObject{

    NSString *_name;

    int age;

}

// 方法名:watchMovie:andFood:

-(void)watchMovie:(NSString *)movie andFood:(NSString *)food;

//方法名是eat:    形参名是:food

-(void)eat:(NSString *)food;

@end

-----方法的实现-----

@implementation Person

//方法的实现

-(void)watchMovie:(NSString *)movie andFood:(NSString *)food{

    NSLog(@"看《%@》,吃着%@",movie,food);

}

-(void)eat:(NSString *)food{

     NSLog(@"吃%@",food);

}

@end

-----主函数-----

int main(int argc, const char * argv[]) {

    @autoreleasepool {

//new一个对象     

        Person *p = [Person new];

//        NSString *food = @"汉堡包";

//        

//        [p eat:food]; //传递变量

        [p eat:@"汉堡包"]; //可以直接给值

        [p watchMovie:@"恐怖片" andFood:@"炸鸡啤酒" ];

    }

    return 0;

}

3有返回值方法的定义语法:

        -(返回值类型)方法名:参数列表;

       例: -(int)sayAge;

 实现:

        -(返回值类型)方法名:参数列表{

            方法体;

            return 值;

        }

        -(int)sayAge{

            return 16;

        }

 方法的返回值跟函数一样,你可以接收,也可以不接收,反正它都会执行

-----------------实例代码-----------------

#import <Foundation/Foundation.h>

-----方法的声明-----

@interface Person : NSObject{

    @public

    NSString *_name;

    int _age;

}

-(int)sayAge;

@end

-----方法的实现-----

@implementation Person

-(int)sayAge{

    return 16;

}

@end

-----主函数-----

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        Person *p = [Person new];//先要有对象       

        //再通过对象来调用方法

//        int age = [p sayAge];

//        

//        NSLog(@"%d",age);

        NSLog(@"%d",[p sayAge]);

    }

    return 0;

}