私はこれがおそらく不十分な質問であることを知っていますが、私は3回連続して徹夜をしましたが、私は非常にぼんやりしています. そして、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デリゲート メソッドに戻ります)、またはフローはそのまま続行しますか? B点からC点?
私は前者を望んでいます。なぜなら、現在、深くネストされたifとelseの不快な混乱である私のコードの全体を単純化できるからです。