2

私はこの奇妙なクラッシュに直面していますが、ログはあまり役に立ちません。

MapViewController アプリケーションにアクセスすると、viewDidAppear でクラッシュし、ログにランダムなエラーが表示されます。

ストーリーボードと自動レイアウトを使用しています。クラッシュ責任コントローラには、フルスクリーン マップ (iPad)、多数の UIbuttons、4 つのコンテナ コントローラ、および popover コントローラがあります。

インターフェイス/ストーリーボードのエラーに関するログはあまり正確ではないため、表示されるエラーはランダムだと思いますが、これは単なる提案です。

このバグは私を夢中にさせています。ランダムに発生し、理由がわかりません。アプリが 20 回連続してビルドされて完全に動作することもあれば、常にエラーが発生してクラッシュすることもあります。

私が得るエラーのいくつかは次のとおりです。

error: address doesn't contain a section that points to a section in a object file

また

Assertion failed: (scalar != 0), function -[NSISLinearExpression scaleBy:], 
file /SourceCache/Foundation/Foundation-
993/Layout.subproj/IncrementalSimplex/NSISLinearExpression.m, line 244.

また

*** Terminating app due to uncaught exception 'NSGenericException',
 reason: '*** Collection <__NSSetM: 0x1f597610> was mutated while being enumerated.'

また

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x1f57d480 UIView:0x2003ffa0.trailing == UIView:0x1f579230.trailing>

Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2013-05-31 11:12:30.320 RMT Anas Plus[2543:907] Unable to simultaneously satisfy    constraints.
Probably at least one of the constraints in the following list is one you don't want.
 Try this: (1) look at each constraint and try to figure out which you don't expect; 
 (2) find the code that added the unwanted constraint or constraints and fix it. 
 (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, 
 refer to the documentation for the UIView property 
 translatesAutoresizingMaskIntoConstraints) 

 (
"<NSAutoresizingMaskLayoutConstraint:0x20089640 h=--& v=--& H:[UIView:0x1f579230(748)]>",
"<NSLayoutConstraint:0x1f57d480 UIView:0x2003ffa0.trailing == UIView:0x1f579230.trailing>",
"<NSLayoutConstraint:0x1f57d400 H:|-(944)-[UIView:0x2003ffa0]   (Names: '|':UIView:0x1f579230 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x1f57d480 UIView:0x2003ffa0.trailing == UIView:0x1f579230.trailing>

Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in    <UIKit/UIView.h> may also be helpful.

助けてくれてありがとう!

編集:

コードを使用してアプリケーションの初期ビュー コントローラーをプログラムで選択し、セッション ファイルが既にある場合はログイン ウィンドウをバイパスします。

self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MapView" bundle:nil];

UIViewController *viewController;


tokeN = [[LoginToken alloc]init];

NSArray *dirArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,    NSUserDomainMask, YES);

NSString *path = [NSString stringWithFormat:@"%@/token.json", [dirArray objectAtIndex:0]];

if ([[NSFileManager defaultManager] fileExistsAtPath:path]==YES) {

    NSData* data = [NSData dataWithContentsOfFile:path];


    self.token = [[LoginToken alloc]init];
    self.token = [AnasParsers createToken:data];


    float timeStamp = [[NSDate date] timeIntervalSince1970];
    float expiringDate = [self.token.timeStamp floatValue];

    NSLog(@"now = %f expire = %f",timeStamp,expiringDate);

    if (timeStamp < expiringDate) {

        viewController = [storyboard instantiateViewControllerWithIdentifier:@"map"];
    }

    else {

        [[NSFileManager defaultManager] removeItemAtPath:path error:NULL];
        self.token = nil;
        viewController = [storyboard instantiateViewControllerWithIdentifier:@"login"];
    }
}

else {viewController = [storyboard instantiateViewControllerWithIdentifier:@"login"];}


self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
4

0 に答える 0