天天看點

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;

}