セグエで接続された 2 つのビュー コントローラーがあり (これらをビュー コントローラー 1 とビュー コントローラー 2 と呼びます)、準備を使用してビュー コントローラー 1 からビュー コントローラー 2 に Lead というエンティティを渡します。これと同じメカニズムを使用して、この同じリードを他のView Controllerに渡します。また、他のView ControllerからView Controller 2を使用し、正常に動作します。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
UIViewController *destinationVC = segue.destinationViewController;
if([destinationVC isKindOfClass:[UINavigationController class]])
destinationVC = ((UINavigationController *)destinationVC).topViewController;
if([destinationVC respondsToSelector:@selector(setLead:)]) {
[destinationVC performSelectorOnMainThread:@selector(setLead:) withObject:self.lead waitUntilDone:YES];
}
ただし、この特定のケースでは、View Controller 2 からこのリード プロパティにどこからでもアクセスしようとします (この場合、viewDidLoad で最初にアクセスすると、コンソールで (lldb) を使用して EXC_BAD_ACCESS code=1 を取得し、他のヘルプはまったく得られません。繰り返しますが、ここで Lead エンティティを渡し、正常に動作する他のビュー コントローラーのこのビュー コントローラー 2 で同じコードを使用します。
if([self.lead.category isEqualToNumber:@(Buyer)])
outputImage = [BackgroundGradient blueGradientWithRect:self.tableView.bounds];
次に私がしたことは、新しいプロパティを作成することでした.リードからリード2にプロパティ宣言をコピーして貼り付け、代わりにデータをそのリードに渡します.クラッシュし、問題なくデータを表示および変更できますが、ビュー コントローラー 1 に戻るためにヒットすると、ビュー コントローラー 2 の @implementation 行に別の EXC_BAD_ACCESS が表示され、トレースとアプリに .ccx_destruct メッセージが表示されますフリーズします。
何が起こっているのかわからず、今、気が狂いそうになっています。NSZombieEnabled とインストゥルメントを使用してみましたが、うまくいきません。どんな助けでも大歓迎です!私はこの問題と2日間戦ってきました。私は、Mavericks で Xcode 5 を実行している iPhone 5s で iOS7 デバッグを行っています。iOS6にもデプロイする必要があるプロジェクトに、ARCでストーリーボードを使用しています。
ありがとう!