【发布时间】:2011-10-22 01:34:41
【问题描述】:
我知道这很简单,这就是为什么我一直在疯狂地尝试自己弄清楚但我已经走到了尽头。
当用户单击按钮时,应该执行此操作:
- (IBAction)startAction:(id)sender {
MyClass *anInstance = [[MyClass alloc] init];
NSLog(@"the name is:%@", [anInstance name]);
如你所见,MyClass 有“name”方法,就是这样:
- (NSString *)name {
return [nameInput stringValue];
NSLog(@"stringValue = %@", [nameInput stringValue]);
nameInput 是一个文本字段,用户填写一个名称,按下按钮调用“startAction”,该方法应该在另一个类中调用“name”,它应该从文本字段返回字符串值并制作日志.
实际发生的是,当按下开始时,日志显示“名称为:(null)”。第二个日志甚至没有出现。我认为这是因为“名称”方法没有被调用。但我不知道为什么。我应该指定它们在不同的类中,并且我声明了这样的“名称”方法:
- (NSString*)name;
编辑:经过一番胡闹后,我发现当“name”方法从它自己的类中调用时,日志会正确显示文本字段中的任何内容。我在“name”方法中放了一个额外的日志,我可以看到它 is 从另一个类中被调用,但它返回的值仍然是(null),这意味着在阻止类获取文本字段字符串的调用。
编辑:我不确定这是否重要,但其中一个类是 NSObject 的子类,另一个是 NSViewController 的子类。
如果您需要更多信息,请告诉我。 感谢您的帮助。
【问题讨论】:
标签: objective-c cocoa class methods nsstring