iOS複習 OC語言 類目Category/類擴展Extension

#import <Foundation/Foundation.h>

#import "Person.h"

#import "Person+sport.h"

#import "NSString+myNumberCount.h"

#import "Person_Sun.h"//這種類擴展,不能實現方法真正私有


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

    @autoreleasepool {

        Person *p = [Personnew];

        [p run];

        [p playfootball];

        

        NSString *s =@"3e4r333";

        [s myNumberCount:s];

        

        NSInteger num = [smyCount:s];

        NSLog(@"%ld",(long)num);

        

        [p play]; //調用類擴展方法

        //p->name = @"yihong"; 私有成員變量,外界無法訪問

        //[p show]; 私有方法,外界也無法訪問

        //p.width = 100;   .m文件中,property修飾的變量,私有

    

    }

    return0;

}




#import <Foundation/Foundation.h>


@interface Person : NSObject


-(void)playfootball;


@end



#import "Person.h"

//擴展類在.m文件創建,真正的私有

@interface Person ()

{

    NSString *name;

    int age;

}

@property (nonatomic,assign)float width;

-(void)show;


@end


@implementation Person


-(void)playfootball{

    NSLog(@"本類在踢足球!");

}


-(void)show{

    name =@"jianguo";

    age =20;

    NSLog(@"%@,%d歲還在玩耍!",name,age);

}


-(void)play{

    NSLog(@"玩玩!");

    [selfshow];

}


@end



#import "Person.h"

@interface Person (sport)

//類目不能添加成員變量,但可以訪問本類中的成員變量

//擴展類方法

-(void)run;


//替換原類中方法

-(void)playfootball;


@end


#import "Person+sport.h"

@implementation Person (sport)


-(void)run{

    NSLog(@"快跑!");

}


-(void)playfootball{

    NSLog(@"分類在踢足球!");

}


@end



#import "Person.h"

//類擴展

/*可以擴展類的成員變量和方法(私有)

 *正常類的聲明格式:@interface類名:NSObject

         類目格式:@interface類名(分類名稱)

         擴展類 @interface類名()      

 *沒有匹配的.m文件,類方法需在本類裏面實現

 */

@interface Person ()

{

    NSString *name;

}

-(void)play;


@end




#import <Foundation/Foundation.h>


@interface NSString (myNumberCount)


-(void)myNumberCount:(NSString *)str;

-(NSInteger)myCount:(NSString *)str;


@end



#import "NSString+myNumberCount.h"


@implementation NSString (myNumberCount)


//計算字符串中數字的個數

-(void)myNumberCount:(NSString *)str{

    int num =0;

    for (int i =0; i < str.length; i++) {

        UniChar c = [strcharacterAtIndex:i];

        NSLog(@"字符%d:%c",i,c);

        if (c >='0' && c<='9') {

            num++;

        }

    }

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

}


-(NSInteger)myCount:(NSString *)str{

    int num =0;

    for (int i =0; i < str.length; i++) {

        UniChar c = [strcharacterAtIndex:i];

        NSLog(@"字符%d:%c",i,c);

        if (c >='0' && c<='9') {

            num++;

        }

    }

    return num;

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章