【发布时间】:2011-10-22 21:05:03
【问题描述】:
对不起,如果它有点长,但我想尽可能描述。 我正在制作一个包含几个类和 2 个 nib 文件的测试应用程序(每个类都是一个 nib 的所有者)。其中一个 nib 文件有一个文本字段,另一个有一个按钮。当按下另一个 nib 视图中的按钮时,我试图记录文本字段内的任何内容,但它返回(null)。在其中一个类(ViewClass)中,我有这个:
- (IBAction)startAction:(id)sender {
MyClass *anInstance = [[MyClass alloc] init];
NSString *string= [anInstance name];
NSLog(@"startAction logged: %@", string);
“名称”是 MyClass 的一个属性。我想要做的是在 MyClass 的 init 中设置“名称”,这样,当初始化 anInstance 时,MyClass init 方法会这样做:
- (id)init {
if ( self = [super init] ) {
[self setName:[nameInput stringValue]];
NSLog(@"init value: %@", name);
}
return self;
“NameInput”是文本字段。我认为这将返回文本字段中的任何内容,但我得到了 null 。当我使用setName:@"text" 时,它可以正常通过,所以文本字段有问题。
我之前使用自己的 getter 执行此操作,在这种情况下,从它自己的类调用该方法时它不会返回 null,但如果它被初始化并从另一个类调用,则它返回 null,我用这个:
- (NSString *)name {
NSLog(@"nameMethod = %@", [nameInput stringValue]);
return [[[nameInput stringValue] retain] autorelease];
这样,我可以说一切都正确设置了,但是当我从 ViewClass 初始化 MyClass 并尝试获取“名称”时发生了一些事情,它一直说文本字段为空。
不确定是否有帮助,但带有按钮的笔尖属于 MyView(它是 NSViewController 的子类),而文本字段属于 MyClass(NSObject 的子类)。
有人建议该字段没有正确链接,但如果这是真的,当从它自己的类调用时它不会起作用,但它确实起作用了。其他人提到这可能是文本字段被初始化为 nil 的问题,所以我尝试了上面的 init 东西。到目前为止,两者都没有奏效。
感谢您的帮助。
【问题讨论】:
标签: objective-c cocoa class methods textfield