EXC_BAD_ACCESSObjective-cブロック

テオ・ボウマン

viewDidLoadメソッド内でこのコードを実行してFirebaseからデータをフェッチし、UIPageViewController

@interface MapViewController () <RoutesPageDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@property (weak, nonatomic) RoutesPageViewController *routesPageViewController;
@property (weak, nonatomic) FIRFirestore *db;
@end

@implementation MapViewController

- (void) viewDidLoad {
    [super viewDidLoad];

    self.db = [FIRFirestore firestore];

    for (UIViewController *obj in self.childViewControllers) {
        if ([obj isKindOfClass:[RoutesPageViewController class]]) {
            self.routesPageViewController = (RoutesPageViewController *)obj;
            self.routesPageViewController.routesPageDelegate = self;
        }
    }

    FIRCollectionReference *routesRef = [self.db collectionWithPath:@"routes"];
    [routesRef getDocumentsWithCompletion:^(FIRQuerySnapshot * _Nullable snapshot, NSError * _Nullable error) {
        if (error != nil) {
            // TODO: handle error
        } else {
            NSMutableArray<RouteModel*> *routes = [NSMutableArray array];

            // For each route
            for (FIRDocumentSnapshot *document in snapshot.documents) {
                RouteModel *route = [[RouteModel alloc] init];
                route.title = document.data[@"title"];
                route.color = document.data[@"color"];
                route.city = document.data[@"city"];

                [routes addObject:route];
            }

            [self.routesPageViewController setRoutes:routes];
        }
    }];


}

そしてこれは呼び出されたsetRoutesメソッドです:

- (void) setRoutes:(NSMutableArray<RouteModel *> *)routes {
    self.routes = routes;

    NSMutableArray<RoutePageViewController *> * routeViewControllers = [NSMutableArray array];
    for (RouteModel * route in routes) {
        [routeViewControllers addObject:[self viewControllerAtIndex:[routes indexOfObject:route]]];
    }

    [self setViewControllers:routeViewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
}

ときにsetRoutesメソッドが実行されます、それはそれを間接参照することはできませんと言って、下の画像にエラーがスローされます。

ここに画像の説明を入力してください

setRoutes方法は、ブロック内で実行されます。

そして、私はこの奇妙なスレッドスタックを取得します: ここに画像の説明を入力してください

どうすればこれを解決できますか?

giorashc

あなたの問題はここにあります:

- (void) setRoutes:(NSMutableArray<RouteModel *> *)routes {
    self.routes = routes;

self.routes暗黙的にセッターsetRoutes呼び出すと、スタックによって示されるように再帰的な無限呼び出しが発生します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ブロック実行時のEXC_BAD_ACCESS

分類Dev

ブロック内の自己のEXC_BAD_ACCESS

分類Dev

C ++ EXC_BAD_INSTRUCTION?

分類Dev

ブロックを再帰的に呼び出す場合のEXC_BAD_ACCESS

分類Dev

Objective-C、EXC_BAD_ACCESS

分類Dev

xcode Objective c、EXC_BAD_ACCESS

分類Dev

Object-Cのブロックを使用すると、「スレッド1:EXC_BAD_ACCESS(code = 1、address = 0x0)」が得られます。

分類Dev

UITextFieldDelegateクラッシュ(exc_bad_access)

分類Dev

Objective-Cプロパティゲッター/セッターのクラッシュEXC_BAD_ACCESS

分類Dev

ブロックハンドラーの「EXC_BAD_ACCESSKERN_INVALID_ADDRESS」を踏みました

分類Dev

Objective-CのEXC_BAD_ACCESSとオブジェクトの割り当てプロパティ

分類Dev

ゲッター付きEXC_BAD_ACCESS

分類Dev

スレッド1:EXC_BAD_INSTRUCTIONS | 迅速

分類Dev

EXC_BAD_INSTRUCTION(コード= EXC_i386_INVOP、サブコード= 0x0)クラッシュ

分類Dev

EXC_BAD_ACCESSのSwiftジェネリックメソッド

分類Dev

クロージャ実行時の EXC_BAD_ACCESS

分類Dev

EXC_BAD_ACCESSエラーC初心者プログラム

分類Dev

EXC_BAD_ACCESSエラーC初心者プログラム

分類Dev

Swiftでジェネリックス、プロトコル、継承を使用してオブジェクトを作成する場合のEXC_BAD_ACCESS

分類Dev

iOSクラッシュEXC_BAD_ACCESS KERN_INVALID_ADDRESS

分類Dev

iOSクラッシュEXC_BAD_ACCESS KERN_INVALID_ADDRESS

分類Dev

SpriteKit SKEmitterNodetargetNodeクラッシュEXC_BAD_ACCESS

分類Dev

NSDictionaryM setObject:forKey:EXC_BAD_ACCESSクラッシュ

分類Dev

NewRelicがEXC_BAD_ACCESSでクラッシュしました

分類Dev

SwiftのジェネリックスとEXC_BAD_ACCESS

分類Dev

EXC_BAD_ACCESSKERN_INVALID_ADDRESSがuiscrollviewでクラッシュする

分類Dev

クラスのメソッドのEXC_BAD_ACCESS

分類Dev

addCurveToPointがEXC_BAD_INSTRUCTIONでクラッシュする

分類Dev

c ++スレッド:EXC_BAD_ACCESS(Code = 2、address0x

Related 関連記事

  1. 1

    ブロック実行時のEXC_BAD_ACCESS

  2. 2

    ブロック内の自己のEXC_BAD_ACCESS

  3. 3

    C ++ EXC_BAD_INSTRUCTION?

  4. 4

    ブロックを再帰的に呼び出す場合のEXC_BAD_ACCESS

  5. 5

    Objective-C、EXC_BAD_ACCESS

  6. 6

    xcode Objective c、EXC_BAD_ACCESS

  7. 7

    Object-Cのブロックを使用すると、「スレッド1:EXC_BAD_ACCESS(code = 1、address = 0x0)」が得られます。

  8. 8

    UITextFieldDelegateクラッシュ(exc_bad_access)

  9. 9

    Objective-Cプロパティゲッター/セッターのクラッシュEXC_BAD_ACCESS

  10. 10

    ブロックハンドラーの「EXC_BAD_ACCESSKERN_INVALID_ADDRESS」を踏みました

  11. 11

    Objective-CのEXC_BAD_ACCESSとオブジェクトの割り当てプロパティ

  12. 12

    ゲッター付きEXC_BAD_ACCESS

  13. 13

    スレッド1:EXC_BAD_INSTRUCTIONS | 迅速

  14. 14

    EXC_BAD_INSTRUCTION(コード= EXC_i386_INVOP、サブコード= 0x0)クラッシュ

  15. 15

    EXC_BAD_ACCESSのSwiftジェネリックメソッド

  16. 16

    クロージャ実行時の EXC_BAD_ACCESS

  17. 17

    EXC_BAD_ACCESSエラーC初心者プログラム

  18. 18

    EXC_BAD_ACCESSエラーC初心者プログラム

  19. 19

    Swiftでジェネリックス、プロトコル、継承を使用してオブジェクトを作成する場合のEXC_BAD_ACCESS

  20. 20

    iOSクラッシュEXC_BAD_ACCESS KERN_INVALID_ADDRESS

  21. 21

    iOSクラッシュEXC_BAD_ACCESS KERN_INVALID_ADDRESS

  22. 22

    SpriteKit SKEmitterNodetargetNodeクラッシュEXC_BAD_ACCESS

  23. 23

    NSDictionaryM setObject:forKey:EXC_BAD_ACCESSクラッシュ

  24. 24

    NewRelicがEXC_BAD_ACCESSでクラッシュしました

  25. 25

    SwiftのジェネリックスとEXC_BAD_ACCESS

  26. 26

    EXC_BAD_ACCESSKERN_INVALID_ADDRESSがuiscrollviewでクラッシュする

  27. 27

    クラスのメソッドのEXC_BAD_ACCESS

  28. 28

    addCurveToPointがEXC_BAD_INSTRUCTIONでクラッシュする

  29. 29

    c ++スレッド:EXC_BAD_ACCESS(Code = 2、address0x

ホットタグ

アーカイブ