Iphone中的内存管理。延迟初始化

时间:2011-06-14 20:39:38

标签: iphone objective-c

我刚刚开始使用Objective-C进行编程。在此之前,我主要是C#人。

如果我以正确的方式释放以下代码中的内存,请告诉我。

     @implementation CalculatorViewController

    -(CalculatorBrain *) brain
    {
      if(!brain)
      {
          brain = [[CalculatorBrain alloc] init]; 
      }

        return brain;
    }


 -(IBAction) operationPressed: (UIButton *) sender
{

    NSString *operation = sender.titleLabel.text;

    if(userInMiddleOfTypingDigit)
    {

        [self brain].operand = display.text.doubleValue;
        userInMiddleOfTypingDigit = NO;
    }

    double result = [[self brain] performOpeaation:operation];

    [display setText:[NSString stringWithFormat:@"%g",result]];
}


- (void)dealloc 
{   
    [brain release];

    [super dealloc];
}

基本上我正在进行延迟初始化,如斯坦福大学教程所示。但不确定我是否正确释放内存。

如果出现问题,请纠正我。

谢谢,

1 个答案:

答案 0 :(得分:2)

是的,看起来不错。就此而言,而不是:

[self brain].operand = display.text.doubleValue;

你也可以这样做:

self.brain.operand = display.text.doubleValue;

他们完全相同。有些人喜欢点语法,有些则不喜欢。但是,如果您已经在一个地方使用它,那么您也可以保持一致。

请注意,如果您计划由多个线程访问此类,那么您可能希望保护延迟初始化检查免受同步问题的影响。但我认为这超出了这个问题的范围。你的记忆管理很好。