Я знаю, что это, возможно, неубедительный вопрос, но я вытащил три последовательных ночи и я очень размытый.И я новичок в Objective C и Cocoa Touch.
Я создал класс, который предоставляет метод делегата.Я буду использовать упрощенный пример кода, поскольку особенности не важны.Заголовочный файл выглядит следующим образом:
#import <Foundation/Foundation.h>
@protocol UsernameCheckerDelegate <NSObject>
@required
- (void)didTheRequestedThing:(BOOL)wasSuccessful;
@end
@interface TheDelegateClass : NSObject {
id <TheDelegateClassDelegate> tdcDelegate;
}
@property (assign) id <TheDelegateClassDelegate> tdcDelegate;
- (void)methodThatDoesSomething:(int)theValue;
@end
И исходный файл выглядит следующим образом:
#import "TheDelegateClass.h"
@implementation TheDelegateClass
@synthesize tdcDelegate;
- (void)methodThatDoesSomething:(int)theValue {
if (theValue > 10) {
[[self tdcDelegate] didTheRequestedThing:NO];
// POINT A
}
// POINT B
int newValue = theValue * 10;
NSString *subject = [NSString stringWithFormat:@"Hey Bob, %i", newValue];
// Some more stuff here, send an email or something, whatever
[[self tdcDelegate] didTheRequestedThing:YES];
// POINT C
}
@end
Вот мой вопрос: если theValue на самом деле больше, чем10, и строка выше POINT A запускается, проходит ли управление потоком программ из этого метода (и обратно к методу делегата didTheRequestedThing в объекте, который вызвал это) или поток продолжается через POINT B к POINT C?
Я надеюсь на первое, потому что я могу упростить черт из своего кода, в настоящее время неприятный беспорядок глубоко вложенных if и elses.