[英]can't change NSTextField text
我对NSTextField有问题-我无法更改其中的文本 (可以在(void)awakeFromNib中更改一次,但此后不能更改)。
我将在这里给我标题和实现:
#import <Cocoa/Cocoa.h>
#import "Employee.h"
@interface EmployeeView : NSViewController {
NSTextField *mikk;
Employee *employee;
}
@property (retain) IBOutlet NSTextField *mikk;
@property (retain) Employee *employee;
- (void)setSelectedEmployee:(Employee*)employeeIn;
@end
#import "EmployeeView.h"
@implementation EmployeeView
@synthesize mikk, employee;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Initialization code here.
}
return self;
}
- (void)setSelectedEmployee:(Employee*)employeeIn
{
employee = employeeIn;
NSLog(@"given employee = %@", employee.fullName);
[mikk setStringValue: @"hi"];
}
-(void)awakeFromNib
{
NSLog(@"i awoke");
[mikk setStringValue:@"hello"];
}
- (void)dealloc
{
[employee release];
[mikk release];
[super dealloc];
}
@end
它可能看起来像fd,但主要要点是我调用了方法
- (void)setSelectedEmployee:(Employee*)employeeIn
在我的appDelegate中,并为其提供所选的“雇员”,因此该实例具有可与之合作的雇员。 我肯定知道,它可以获取给定的雇员,因为NSLog总是正确地打印出来。
名为“ mikk”的NSTextField在IB中已正确链接,因为它在awakeFromNib方法中将标签文本设置为“ hello”。 所以主要的问题是: 为什么我不能在其他地方设置标签文本?
我知道这看起来很奇怪/愚蠢,但是,如果您想了解更多信息(如果可以的话,还可以提供什么信息)以及使该文本更具可读性的建议,请告诉我。
编辑 :查看代码,仅保留“ i-think-important-bits”。还保留了IBOutlet,对目标没有任何影响。
尝试改变
@property (assign) IBOutlet NSTextField *mikk;
至
@property (retain) IBOutlet NSTextField *mikk;
您正在使用垃圾收集吗? 以下是笔尖加载文档中有关垃圾回收下的对象保留的内容:
图中的大多数对象通过对象之间的强引用而保留在内存中。 最初,只有nib文件中的顶级对象没有强引用。 因此,您的代码必须创建对这些对象的强引用,以防止对象图被释放。
因此,如果您对包含文本视图(可能是视图或窗口)的顶级对象没有很好的引用,则可能正在收集整个对象图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.