1

タイトルにあるように、コードでこのエラーが発生しています。通常の(lldb)もの以外に出力はありません。それが指している線は

0x10df051:movl 8(%edx)、%edi0x10df051:movl 8(%edx)、%edi

コード自体は

DeltaViewController *deltaview = [[DeltaViewController alloc] initWithNibName:@"DeltaViewController" bundle:nil];

ピッカーでオブジェクトを選択したときに発生し、サブビューが追加されます。

4

1 に答える 1

2

deltaviewはDeltaViewControllerタイプであるため、ビューではなくコントローラーです。self.view([self.view addSubview:deltaview.view];)のサブビューとして追加した後、を解放することができますdeltaview。次に、メソッド(DeltaViewControllerに実装されている)をに送信するとdeltaview、もちろんこのEXC_BAD_ACCESSエラーが発生します。

簡単な解決策:ローカル変数ではなくiVarとして宣言するだけですdeltaview(実際には、代わりに使用する必要があります)。deltaViewController


編集:

さて、ここに簡単なコードスニペットがあります:

YourViewController.h:

@interface YourViewController : UIViewController

@property DeltaViewController *deltaViewController;

@end

YourViewController.m:

@implementation YourViewController

@synthesize deltaViewController;
...

- (void)aMethod;

@end

- (void)dealloc {
  self.deltaViewController = nil; // set it to nil & release it after yourViewController dealloced.
  [super dealloc];
}

- (void)aMethod {
  DeltaViewController *deltaViewController = [[DeltaViewController alloc] initWithNibName:@"DeltaViewController" bundle:nil];
  // ...(setup deltaViewController)
  self.deltaViewController = deltaViewController; // it'll retain deltaViewController
  [deltaViewController release];

  ...
}
于 2012-10-12T03:12:29.110 に答える