我正在关注developer.apple.com上的OSX教程系列并遇到了问题。当我将文本粘贴或键入NSTextView并尝试将其发送到常规粘贴板时,NSTextView返回一个空字符串。然后,我试图查看NSTextStorage是否为null,它也返回为null。以下是h和m文件的相关部分。
// Document.m
#import "Document.h"
@implementation Document
@synthesize the_view; //NSTextView
@synthesize showStuff; //NSScrollView
- (IBAction)copy2:(id)sender {
NSLog(@"copying");
NSTextStorage *ts = [the_view textStorage];
if( ts )
NSLog(@"not null");
NSString *text = [[the_view textStorage] string];
NSLog(@"%@",text);
//NSString *text = @"okay";
NSPasteboard *pb = [NSPasteboard generalPasteboard];
[pb declareTypes:[NSArray arrayWithObjects:NSStringPboardType, nil] owner:nil];
[pb setString:text forType:NSStringPboardType];
}
//Document.h
#import <Cocoa/Cocoa.h>
@interface Document : NSDocument
{
NSTextView *the_view;
}
@property (nonatomic, retain) IBOutlet NSTextView *the_view;
- (IBAction)copy2:(id)sender;
- (IBAction)paste2:(id)sender;
@property (weak) IBOutlet NSScrollView *showStuff;
@end
上面你会注意到我有一个注释掉的字符串“text”的版本设置为“okay”。如果我使用它,“okay”这个词放在普通的粘贴板上。
所以我的问题是,当NSTextView中存在有效文本时,如果你能发现NSTextStorage为什么会返回null的任何原因。感谢帮助。