首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CS193P分配%1清除

CS193P分配%1清除
EN

Stack Overflow用户
提问于 2012-02-22 10:34:46
回答 2查看 1.5K关注 0票数 0

我刚刚开始学习斯坦福大学的iOS5课程,并且已经完成了RPN计算器,但我想让"Clear“按钮的工作方式稍有不同。这就是我现在的方式,没有改变CalculatorModel的“大脑”:

代码语言:javascript
复制
- (IBAction)clearPressed
{
    self.display.text = @"";                        // Clear the display
    self.historyWindow.text = @"";                  // Clear the history window
    self.model = nil;                               // Reset the stack
    self.userIsInMiddleOfEnteringNumber = NO;       // Reset user typing boolean
}

我可能错了,但是"self.model = nil;“看起来并没有真正从堆栈中删除对象,它只是模仿而已。所以我给CalculatorModel的“大脑”添加了一个功能:

代码语言:javascript
复制
-(void) clearOperandStack
{
    [self.operandStack removeAllObjects];
}

并想在CalculatorViewController中的"clearPressed“函数中调用它,但我遇到了问题,可能是因为我还没有完全理解objective c。这是我认为我必须要做的,但它似乎不想工作。

代码语言:javascript
复制
- (IBAction)clearPressed
{
    self.display.text = @"";                        // Clear the display
    self.historyWindow.text = @"";                  // Clear the history window
//    self.model = nil;                               // Reset the stack
    [self.model clearOperandStack];
    self.userIsInMiddleOfEnteringNumber = NO;       // Reset user typing boolean
}

有人能给我解释一下调用该方法的正确方法/我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-23 00:11:16

我的任务1的解决方案:https://github.com/rl1987/CS193p-Homework-1

票数 0
EN

Stack Overflow用户

发布于 2012-02-23 23:16:55

这里有一个链接指向另一个回答这个问题的帖子。

CS193P - Adding cancel button to iOS calculator

让我们看看我是否能解释为什么self.model = nil;

我将在你的模型中使用一张纸的类比。在这张纸上,你可以写你的堆栈,加上你的模型可能知道的任何额外的东西。

假设你懒惰地为模型实例化了getter (就像讲师做的那样);当你调用self.model时,如果你已经有一张纸已经有了你的模型,它会给你一张纸,如果你没有一张纸给你的模型,它会抓起一张空白的纸把它变成你的模型。

现在,当你说self.model =nil时,你是在告诉它扔掉你的模型纸。这意味着你现在不再有一个堆栈,或者模型中的任何其他东西。

现在,随着getter被懒惰地实例化,当你下次请求你的模型时,它还没有一个,所以它会为你创建一个全新的模型。

所以也许简单的总结是self.model = nil;不会清空堆栈,它会完全丢弃堆栈,你没有空的堆栈,你没有堆栈。

而你的clearOperandsStack,只是清空堆栈,所以你有一个空的堆栈。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9388357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档