OC之類方法

#import<Foundation/Foundation.h>spa

/*.net

 1、對象方法指針

 1減號- 開頭對象

 2)只能由對象來調用get

 3)對象方法中能訪問當前對象的成員變量(實例變量)io

2、類方法class

 1加號+ 開頭test

 2只能由類(名)來調用效率

 3類方法中不能訪問成員變量(實例變量)import

 

 3類方法的好處和使用場合

 1不依賴於對象,執行效率高

 2能用類方法,儘可能用類方法

 3場合:當方法內部不須要使用到成員變量時,就能夠改成類方法

 

 能夠容許類方法和對象方法同名

 */

@interfacePerson : NSObject

{

    int age;

}

// 類方法都是以+開頭

+(void)printClassName;

 

-(void)test;

+(void)test;

@end

 

@implementationPerson

+(void)printClassName

{

    // errorinstancevariable 'age' accessed in class method

    // 實例變量age不能在類方法中訪問

    //NSLog(@"這個類叫作Person-%d",age);

}

-(void)test

{

    NSLog(@"111-%d", age);

    //[Person test];

}

 

+(void)test

{

    // 會引起死循環

    //[Person test];

        NSLog(@"333");

   

// 會引起死循環

// [Person test];

}

@end

 

 

intmain()

{

    //[PersonprintClassName];//直接用類名調用類方法

    [Person test];

    //Person *p =[Person new];

    //[p test];

        /*

     -[Person printClassName]: unrecognizedselector sent to instance 0x7fa520c0b370

     */

    // 系統會認爲如今調用的printClassName是個對象方法

    //[p printClassName];

        return 0;

}

【備註】不能使用指針去訪問類方法,會報錯。類方法和成員(對象)方法能夠同名。

相關文章
相關標籤/搜索