95

基本的な iPhone アプリケーションを (スタンフォード大学の iTunes CS193p の講義を受けながら) iOS シミュレーターで実行するのに問題があります。

私はしばらくの間(GoogleとSOの両方で)検索してきましたが、これまでのところ解決策を見つけることができません. 似たようなバグがたくさんありますが、解決策はこれを修正していないようです。

Xcode で「実行」をクリックします。コンパイルとビルドに成功し、iOS シミュレーターを起動しますが、アプリをロードすることはありません。上部のステータス バーのみ。黒い画面で。

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

さらに混乱させるために、(UIWebView)これらの講義の前に Web ラッパーを作成しましたが、これは正常に機能します。しかし、コードにはほとんど違いはありません。私が最初から作成した新しいアプリはすべて、同じ黒い画面の問題で失敗します。

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

Xcode が iOS シミュレーターと対話する機能を失い、それが実行中であると想定しているかのようです (iOS シミュレーターを終了しても)。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
4

32 に答える 32

44

エミュレーターをリセットする前に、まずプロジェクトの「プロジェクト ナビゲーター」画面に移動し、一般->展開情報画面で、メイン インターフェイス プロパティが適切に設定されていることを確認してください。

ここに画像の説明を入力

于 2014-01-22T09:16:31.813 に答える
9

iOSアプリ開発初心者です。私は最初から iOS アプリの開発を練習していましたが、非常に基本的な Hello World アプリを実行しているときに、iOS シミュレーターでアプリをビルドして実行した後、黒い空白の画面しか表示されないという同じ問題に直面しました。どういうわけか、問題の解決策を見つけるのに苦労しているときに、誤って iOS シミュレーターで [ウィンドウ] --> [スケール] --> [50%] をクリックして、問題を解決しました。その後、アプリのホームページが表示され、アプリのアイコンをクリックすると、アプリを正常に実行できました。アプリのバージョン: Xcode 5.1 iOS シミュレーター: 7.1 OSX: 10.9.3

于 2014-07-21T09:42:26.400 に答える
6

これは、正しい展開情報を設定していないことが原因である可能性があります。(つまり、ストーリーボードがメイン インターフェイスとして設定されていない場合)

于 2013-11-22T14:17:58.430 に答える
5

コンピューターを再起動するだけで十分です。

于 2013-02-12T21:09:25.390 に答える
5

解決策 1 :再試行できますQuit simulator

解決策 2 (推奨) : iOS Simulator->に移動Reset Content and Settings...

ステップ1

これにより、アラートがポップアップ表示されます'Are you sure you want to reset the iOS Simulator content and settings?'

ステップ2

必要に応じて選択Resetするか、その他のDon't Resetボタンを選択します。

シミュレーターのコンテンツをリセットすると、シミュレーターにインストールされているすべてのアプリが削除され、初期設定にリセットされることに注意してください。

于 2015-09-23T06:25:44.490 に答える
5

もう 1 つの解決策は、Objective C プロジェクトでプログラムによって UI を構築している場合、ビューを拡張するコードを追加する必要がある場合があるため、これらの 3 行を追加して、ウィンドウのインターフェイスがコードと対話するようにする必要があることです (外側の 2は実際にコードと対話しており、もう 1 つは画面を白に変更するので、それが機能していることがわかります)。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.

...

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];


return YES;
}
于 2015-08-19T18:32:39.187 に答える
3

私はこれに数時間苦労しました。最後に私にとってそれを解決したのは:

sudo xcrun simctl erase all

xcrun simctl shutdown all

于 2021-05-05T14:23:20.917 に答える
0

私はこれに対する修正を見つけることができました。このブログ投稿のおかげで見つかりました:

http://vandadnp.wordpress.com/2012/03/18/xcode-4-3-1-cannot-attach-to-ios-simulator/

解決策は、cmd + shift +、(コマンド、Shift、コンマ "、")を押すことです。これにより、リリースまたはデバッグ用のいくつかのオプションがロードされます。

デバッガーをLLDBからGDBに変更します。これで問題が修正されます。

于 2013-02-07T20:48:36.377 に答える
0

シミュレータの問題であることを確認するには、コードを変更せずに新しいプロジェクトでシミュレータに接続できるかどうかを確認してください。タブバーのテンプレートを試してください。

シミュレータの問題だと思われる場合は、iOS シミュレータ メニューを押します。「コンテンツと設定をリセット...」を選択します。「リセット」を押します。

XIB と、Interface Builder で接続した @properties を確認できませんが、ウィンドウをロードしていないか、ウィンドウがビュー コントローラーをロードしていない可能性もあります。

于 2013-02-07T20:56:13.253 に答える
0

[シミュレーター] -> [内容と設定をリセット] をクリックして、シミュレーターをリセットするだけです。

于 2016-12-08T10:20:07.000 に答える
0

Xcodeでも同じ問題がありました...アプリの起動時に黒い画面が表示され、デバッグやクリックがないとXcodeがロックされます。

私は最終的に問題を発見しました...シミュレーターがXcodeに接続できないというリードに従って、etc/hostsファイルを調べたところ、数か月前に別の問題を解決するためにホストファイルを編集してローカルホストを自分にマップしていたことがわかりましたデフォルトの代わりに固定IP...私の値:

10.0.1.17 ローカルホスト

それは私のIPなので、これは機能するはずですが、デフォルトのIP固定Xcodeに戻すと...

127.0.0.1 ローカルホスト

お役に立てれば。

于 2013-12-23T15:54:02.350 に答える
0

私はダグが提案すること(「コンテンツと設定のリセット」)を行っていましたが、これは機能しますが、多くの時間がかかり、本当に面倒です...最近、完全に偶発的な、はるかに高速で機能するように見える別のソリューションを見つけるまで!シミュレーターで cmd+L を押すか、シミュレーター メニューの [ハードウェア -> ロック] に移動して画面をロックします。画面のロックを解除すると、アプリは何も起こらなかったように動作します :)

于 2014-02-13T16:40:41.470 に答える