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