【发布时间】:2011-08-03 01:28:34
【问题描述】:
更新:似乎有一个返回双精度/浮点数的方法并尝试进入的问题。由于我能够进入setOperand 但不能进入preformOperation,因此我尝试将preformOperation 从- (void) 更改为- (void),一切都按预期工作。玩得更多,我尝试了(int)、(float) 和(id)。
(int) 和(id) 都允许我毫无问题地进入该方法。 (float) 但是表现出与 (double) 相同的行为,其中 xcode 只会越过这条线,而不是让我跨入。
有人对为什么会发生这种情况有任何想法吗?
原文: 我最近决定学习 Obj-C/iOS 编程,但在尝试单步执行代码时有点卡住了。
如果我脑子里有以下方法:
//CalcBrain.h
@interface CalcBrain : NSObject {
double operand;
NSString * waitingOperation;
double waitingOperand;
}
- (void)setOperand:(double)anOperand;
- (double)performOperation:(NSString *)operation;
@end
在视图控制器中:
//CalcViewControl.m
...
- (CalcBrain *)brain
{
if(!brain)
brain = [[CalcBrain alloc] init];
return brain;
}
...
- (IBAction)operationPressed:(UIButton *)sender
{
if(inMiddleOfOps)
{
[[self brain] setOperand:[[display text] doubleValue]];
inMiddleOfOps = NO;
}
NSString *operation = [[sender titleLabel] text];
double result = [[self brain] performOperation:operation];
[display setText:[NSString stringWithFormat:@"%g", result]];
}
...
如果我在以下位置设置断点:
double result = [[self brain] performOperation:operation];
然后“步入”,我将看到它进入 CalcViewControll.m 中的 [self brain] 代码部分,但是一旦我从该部分返回,它就会直接进入下一行。来自 C/C++ 背景,这不是我所期望的行为,而是我在想/希望它会进入 CalcBrain.m 并让我逐步完成
performOperation“大脑”内部的方法。
如果我在 performOperation 方法的第一行添加断点,我可以获得此功能 - 但这并不理想。
我知道这些是正在发送的消息,但你真的不能走进去看看发生了什么吗?我错过了一些明显的东西吗?如果它有所作为,我正在使用 Xcode 3.2.6。
编辑:
[自脑]不为零。
我正在调试配置中运行/构建(未设置优化)。
我已尝试将有问题的行分成两条单独的行,但仍无法按预期工作。
【问题讨论】:
标签: objective-c xcode debugging