【发布时间】:2010-06-11 11:47:09
【问题描述】:
我正在尝试用 cocoa 制作一个简单的计算器应用程序。当我单击其中一个按钮时,程序挂起。我想我已经将问题追溯到控制器的一部分,该部分在当前显示的数字末尾添加了一个数字:
- (void)updateNumber:(int)buttonClicked{
*self.activeNumberPointer = *self.activeNumberPointer * 10 + buttonClicked;
[outputField setFloatValue:*self.activeNumberPointer];
}
我使用了一个指向“activeNumber”的指针,以便让我的程序知道我正在编辑两个操作数中的哪一个。
任何帮助表示赞赏,谢谢。
(编辑):我的声明和@property:
//CalculatorController.h
@interface CalculatorController : NSObject {
IBOutlet NSTextField *outputField;
float variable1, variable2;
float *variable1Pointer, *variable2Pointer;
float *activeNumberPointer;
}
float variable1 = 0;
float variable2 = 0;
float* variable1Pointer = &variable1;
float* variable2Pointer = &variable2;
float* activeNumberPointer = &variable1;
@property (readwrite) float variable1, variable2;
@property (readwrite) float *vairable1Pointer, *variable2Pointer;
@property (readwrite) float *activeNumberPointer;
...
此处提供完整的 XCode 文件:http://rapidshare.com/files/397664243/Calculator_2.zip (仅供参考:我实际上在项目中使用了 leftNumberValue 和 rightNumberValue 而不是 variable1 和 variable2) 由于我是 Objective-C 和 XCode 的新手,欢迎提出任何一般性批评。
【问题讨论】:
-
为什么
activeNumberPointer是一个指针? -
它应该指向用户编辑并显示在
ouputField上的variable1。当用户单击加、减、乘或除时,它会将activeNumberPointer更改为指向variable2。单击等号时,它会对variable1和variable2执行必要的操作。我希望这能澄清我的问题。 -
如果您添加声明和
@property声明,我们会更轻松。还有,variable1和variable2在哪里,它们是 ivars 吗? -
“程序挂起”是什么意思?是否崩溃?是否有任何错误输出到控制台?
-
没有有用的控制台输出。该程序启动正常,但当我单击 10 个数字按钮之一时挂起。它只是以 (gdb) 结尾,然后在 XCode 中的
*self.activeNumberPointer = *self.activeNumberPointer * 10 + buttonClicked;旁边放一个红色箭头
标签: objective-c cocoa pointers macos