2

セグエで接続された 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でストーリーボードを使用しています。

ありがとう!

4

2 に答える 2