私は以前にあまりにも多くのコードでこの質問をしました。
ViewController は、ViewController 内の UIView チェーン、Controller>>View>>SubView を初期化します。SubView が初期化された後、ViewController がデリゲートとして設定されます。
aSubView.delegate = self;
NSLog(@"$@",aSubview.delegate),ViewController を返すので、それが設定されていることがわかります。
SubView ではNSLog(@"$@",self.delegate),、hr.lproj や Foundation フレームワークへのファイル パスなどのランダムながらくたを返します。
デリゲートはViewControllerにリンクせず、代わりにランダムであるため、デリゲートメソッドのいずれかを実装しようとするとクラッシュします。
SubView.h ファイルは次のようになります。
#import "TestDelegate.h"
@interface TestSubView : UIView {
id<TestDelegate> delegate;
}
@property (assign) id<TestDelegate> delegate;
編集: ViewController はアプリ デリゲートで次のように初期化されます。
ViewController *controller = [[ViewController alloc] init];
[window addSubview:controller.view];
[controller release];
App Delegate に追加した他の唯一のものは、デフォルトでは ViewController ヘッダーのインポートです