Pasteboards and Nil-Targeted Actions(Chapter 21 of Cocoa Programming for Mac OS X)
1 - (void)writeToPasteboard:(NSPasteboard *)pb
2 {
3 [pb declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:self];
4 [pb setString:string forType:NSStringPboardType];
5 }
6
7 - (BOOL)readFromPasteboard:(NSPasteboard *)pb
8 {
9 NSArray *types = [pb types];
10 if([types containsObject:NSStringPboardType])
11 {
12 NSString *value = [pb stringForType:NSStringPboardType];
13 if([value length] == 1)
14 {
15 [self setString:value];
16 return YES;
17 }
18 }
19
20 return NO;
21 }
22
23 - (IBAction)cut:(id)sender
24 {
25 [self copy:sender];
26 [self setString:@""];
27 }
28
29 - (IBAction)copy:(id)sender
30 {
31 NSPasteboard *pb = [NSPasteboard generalPasteboard];
32 [self writeToPasteboard:pb];
33 }
34
35 - (IBAction)paste:(id)sender
36 {
37 NSPasteboard *pb = [NSPasteboard generalPasteboard];
38 if (![self readFromPasteboard:pb])
39 {
40 NSBeep();
41 }
42 }
2 {
3 [pb declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:self];
4 [pb setString:string forType:NSStringPboardType];
5 }
6
7 - (BOOL)readFromPasteboard:(NSPasteboard *)pb
8 {
9 NSArray *types = [pb types];
10 if([types containsObject:NSStringPboardType])
11 {
12 NSString *value = [pb stringForType:NSStringPboardType];
13 if([value length] == 1)
14 {
15 [self setString:value];
16 return YES;
17 }
18 }
19
20 return NO;
21 }
22
23 - (IBAction)cut:(id)sender
24 {
25 [self copy:sender];
26 [self setString:@""];
27 }
28
29 - (IBAction)copy:(id)sender
30 {
31 NSPasteboard *pb = [NSPasteboard generalPasteboard];
32 [self writeToPasteboard:pb];
33 }
34
35 - (IBAction)paste:(id)sender
36 {
37 NSPasteboard *pb = [NSPasteboard generalPasteboard];
38 if (![self readFromPasteboard:pb])
39 {
40 NSBeep();
41 }
42 }