Objective-C Category(类目)的简单练习

Objective-C category类目的操作练习

main.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Person+Revert.h"
#import "NSArray+Convert.h"

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

@autoreleasepool {

Person *durban = [Person PersonWithName:@"Durban" withAge:25];
NSLog(@"Durban's name = %@, Durban's age = %d",durban.name, durban.age);
[durban eat];
[durban sleep];
[durban play];
[durban test];

NSMutableArray *array = [NSArray arrayWithNumber:12345678];

for (id string in array) {
NSLog(@"string = %@",string);
}
// insert code here...
NSLog(@"Hello, World!");

}
return 0;
}

文件的简单列表如下:

  1. Person.h
  2. Person.m
  3. Person+Revert.h
  4. Person+Revert.m
  5. NSArray+Convert.h
  6. NSArray+Convert.m

Person.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//
// Person.h
// CategoryTest
//
// Created by david on 13-10-30.
// Copyright (c) 2013年 WalkerFree. All rights reserved.
//

#import <Foundation/Foundation.h>

#pragma mark - NSObject
@interface Person : NSObject{

@private
NSString *_name;
int _age;
}

@property (nonatomic,copy) NSString *name;
@property (nonatomic) int age;

-(void) test;

-(void) typing;

@end

#pragma mark - Creation

@interface Person (Creation)

+(id) PersonWithName:(NSString *)aName;

+(id) PersonWithName:(NSString *)aName withAge:(int)age;

-(id) initWithName:(NSString *)aName;

-(id) initWithName:(NSString *)aName withAge:(int)age;

@end

#pragma mark - Life

@interface Person (Life)

-(void) eat;

-(void) sleep;

-(void) play;

@end

Person.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
//
// Person.m
// CategoryTest
//
// Created by david on 13-10-30.
// Copyright (c) 2013年 WalkerFree. All rights reserved.
//

#import "Person.h"

@implementation Person

@synthesize name = _name;
@synthesize age = _age;

-(void) test
{
NSLog(@"这是一个Person类的Test方法");
}

-(void) typing
{
NSLog(@"这是一个Person类的Typing方法");
}

@end


#pragma mark - Creation

@implementation Person (Creation)

-(id) initWithName:(NSString *)aName
{
self = [super init];
if(self)
{
self.name = aName;
}
return self;
}

-(id) initWithName:(NSString *)aName withAge:(int)age
{
self = [super init];
if(self)
{
self.name = aName;
self.age = age;
}
return self;
}

+(id) PersonWithName:(NSString *)aName
{
Person *person = [[Person alloc] init];
person.name = aName;

return person;
}

+(id) PersonWithName:(NSString *)aName withAge:(int)age
{
Person *person = [[Person alloc] init];
person.name = aName;
person.age = age;
return person;
}

@end


@implementation Person (Life)

-(void) eat
{
NSLog(@"Person Lefe --- 我在吃饭嗯");
}

-(void) sleep
{
NSLog(@"Person Lefe --- 我在睡觉嗯");
}

-(void) play
{
NSLog(@"Person Lefe --- 我在打游戏嗯");
}

@end

Person+Revert.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//
// Person+Revert.h
// CategoryTest
//
// Created by david on 13-10-30.
// Copyright (c) 2013年 WalkerFree. All rights reserved.
//

#import "Person.h"

@interface Person (Revert)

-(void) eat;

@end

Person+Revert.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//
// Person+Revert.m
// CategoryTest
//
// Created by david on 13-10-30.
// Copyright (c) 2013年 WalkerFree. All rights reserved.
//

#import "Person+Revert.h"

@implementation Person (Revert)

-(void) eat
{
NSLog(@"Person (Revert) eat -- 我的在Revert吃饭嗯");
}
@end

NSArray+Convert.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//
// NSArray+Convert.h
// CategoryTest
//
// Created by david on 13-10-30.
// Copyright (c) 2013年 WalkerFree. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSArray (Convert)

+(NSMutableArray *) arrayWithNumber:(int)number;

@end

NSArray+Convert.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//
// NSArray+Convert.m
// CategoryTest
//
// Created by david on 13-10-30.
// Copyright (c) 2013年 WalkerFree. All rights reserved.
//

#import "NSArray+Convert.h"

@implementation NSArray (Convert)

+(NSMutableArray *) arrayWithNumber:(int)number
{
NSMutableArray *numberArray = [[NSMutableArray alloc] init];
while (number) {
int last = number % 10; //取出最后一位
number /= 10; //去掉最后一位
[numberArray addObject:[NSNumber numberWithInt:last]];
}
return numberArray;
}
@end