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;

}

 

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