0

私は以前にあまりにも多くのコードでこの質問をしました。

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 ヘッダーのインポートです

4

1 に答える 1

1

NSLog への 2 つの呼び出しの間でビュー コントローラー オブジェクトが解放/割り当て解除されている可能性はありますか?

于 2010-11-22T23:44:37.273 に答える