#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;
}