[英]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.