1. ホーム
  2. ios

[解決済み] XcodeからiOSシミュレータを起動すると黒い画面が表示され、その後Xcodeがハングアップしてタスクを停止できない

2023-01-28 23:19:53

質問

スタンフォード大学の iTunes CS193p の講義を受けながら作った基本的な iPhone アプリケーションを、iOS シミュレータで動かすのに苦労しています。

しばらく検索していましたが (Google と SO の両方)、今のところ解決策を見つけることができません。多くの同様のバグがありますが、解決策はこれを修正するようには見えません。

Xcode で "run" をクリックします。コンパイルとビルドは正常に行われ、iOS シミュレーターが起動しますが、アプリをロードするところまでは行きません。上部にステータス バーが表示されるだけです。 黒い画面のままです。

私は非常に基本的なコードしか書いていませんが(講義にしたがって)、この問題を乗り越えることができません。

さらに問題を混乱させるために、私はウェブラッパーである (UIWebView) を書きましたが、これは問題なく動作します。しかし、コードにはほとんど何の違いもありません。 私がゼロから作成したすべての新しいアプリは、すべて同じブラック スクリーンの問題で失敗します。

シミュレータでホームボタンを押してアプリを起動すると、表示されます。しかし、Xcode は何が起こっているのかわからないようです。

まるで Xcode が iOS Simulator と話す能力を失ってしまったかのように、(iOS simulator を終了しても)iOS Simulator が起動していると思い込んでいます。私は Xcode を終了しようとすると、タスクを停止するように求められます。すると、そのままハングアップしてしまいます。 だから私はXcodeから抜け出すために強制的に再起動する必要があります。

私が使用しているのは OSX 10.8.2 Xcode 4.5.2 iOS シミュレータ 6.0

CalculatorAppDelegate.h

#import <UIKit/UIKit.h>

@interface CalculatorAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

CalculatorAppDelegate.m

#import "CalculatorAppDelegate.h"

@implementation CalculatorAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application
{
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

- (void)applicationWillTerminate:(UIApplication *)application
{
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}

@end

CalculatorViewController.h

#import <UIKit/UIKit.h>

@interface CalculatorViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *display;

@end

CalculatorViewController.m

#import "CalculatorViewController.h"

@implementation CalculatorViewController

@synthesize display = _display;

- (IBAction)digitPressed:(UIButton *)sender
{
    NSString *digit = [sender currentTitle];
NSLog(@"digit pressed = %@", digit);
}

@end

どのように解決するのですか?

意外なことに、私の場合は、iOS Simulator メニューで、"Reset Content and Settings" を押すことで、うまくいきました。(iOS 13 では、[ハードウェア] の下にあります)。