Обновление: Кажется, есть проблема с наличием метода, который возвращает double / float, и пытается вступить. Так как я смог войти в setOperand
, но не preformOperation
, я попытался изменить preformOperation
на - (void)
с - (double)
, и все заработало, как и ожидалось. Играя с вещами немного больше, я попробовал (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];
А потом "пошагово", я увижу, как он входит в раздел кода [self brain]
в CalcViewControll.m, однако, как только я вернусь из этого раздела, он перейдет прямо к следующей строке. Исходя из фона C / C ++, это не то поведение, которого я ожидал, вместо этого я думал / надеялся, что он направится в CalcBrain.m и позволит мне пройти через
performOperation
метод внутри "мозга".
Я могу получить эту функциональность, если добавлю точку останова в первой строке метода performOperation
- однако это не идеально.
Я понимаю, что это отправляемые сообщения, но разве вы не можете зайти внутрь, чтобы увидеть, что происходит? Я что-то упускаю из виду? Я использую Xcode 3.2.6, если это имеет значение.
редактирование:
[Я. мозг] не ноль.
Я запускаю / собираю в конфигурации отладки (оптимизация не установлена).
Я пытался разбить данную строку на две отдельные строки, но все равно не работает, как ожидалось.