#import "Mutation.h" //my class
@implementation NTAppDelegate
使用app delegate作为控制器
@synthesize window = _window;
@synthesize dataField = _dataField;
@synthesize OutputField = _OutputField;
@synthesize mutation;
为什么不_mutation?
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
Mutation *aMutation = [[Mutation alloc] init];
[self setMutation:aMutation];
[self.mutation setInputString:@"new"];
[self.mutation setOutputString:@"old"];
NSLog(@"Mutation inputString is %@; outputString is %@",[mutation inputString],[mutation outputString]);
}
getUserText应该采用文本字段输入字符串并将其粘贴到我的变异对象中的ivar中...
- (IBAction)getUserText:(NSTextField *)sender
{
// assign the users entered text to mutation's inputString
NSString* newText = [sender stringValue];
来自NSControl EUREKA的-stringValue inh!
NSLog (@"%@ was entered", newText);
上面的作品
[mutation setInputString:newText];
上面的崩溃,卖得不好?不能称为突变。 }
答案 0 :(得分:0)
我可以告诉你,_mutation纯粹是一个偏好问题。而不是创建名为mutation的实例变量的属性,而是创建一个名为_mutation的实例。当您想要将实例变量与本地生成的变量区分开来时,这很有用(您不必编写self.mutation,因为它是推断的实例变量)
在目标c中@synthesize时你可以命名实例变量。所以你可以写: @synthesize mutation = thisIsMyMutation;
至于你的代码崩溃的原因,我认为这是因为你在声明它时保留了属性,因此它是强类型的。不要从声明中删除保留,因为该对象应该被保留。相反,请重写代码,以便在使用之前为属性分配内存。
self.mutation = [[Mutation alloc] init];
[self.mutation setInputString:@"new"];
[self.mutation setOutputString:@"old"];
总结:我认为您的问题在于您没有为该物业分配内存。这通常在init函数中完成。因为你在应用程序中委托你是否在didFinishLaunching中进行委托,它应该可以正常工作。