3

これら2つの間に違いはありますか?

UIAlertView * alertBox = [[UIAlertView alloc] initWithTitle:@"Title"];

と:

UIAlertView * alertBox = [[UIAlertView alloc] init];
alertBox.title = @"Title";

(もちろんどちらも同じ結果を表示します!)

4

4 に答える 4

2

前者はおそらくわずかに高速ですが、このような最適化を行っている場合は間違いです。アラートを表示することはめったに行わず、直後にユーザーの応答を待つことになります。それを数マイクロ秒削っても何のメリットもありません。アプリケーションの実行方法にまったく違いを感じることはありません。開発者として読みやすい方を使用してください。

于 2013-01-08T13:49:43.377 に答える
2

パフォーマンスに実際の違いはありません。1 つは、初期化時にタイトルを設定することです。これは、実際alertBox.titleにはカスタム初期化メソッドのコード行を呼び出すだけです。.title彼らがプロパティを持っている理由は、あなたがそれを変更できるようにするためです。

したがって、このコード:

UIAlertView * alertBox = [[UIAlertView alloc] initWithTitle:@"Title"];

このコードよりも優れているでしょう:

UIAlertView * alertBox = [[UIAlertView alloc] init];
alertBox.title = @"Title";

本当に行数のせいですが、次のコードを使用できます:

alertBox.title = @"New Title";

後で変更する


速度に違いがある場合は、それを測定するためにプランク秒計算機が必要になります:) - いくつかの良い誇張がありますが、基本的にはありません

titleメモリの場合、オブジェクトを初期化し、両方の場合でそのパラメーターを設定しているため、違いはありません。それを行う方法が異なるだけです。最初のものをより短い方法で記述できると考えてください。ただし、実際のクラスは基本的に同じことを行います。

コンストラクターのカスタム初期化メソッドを使用すると、時間と行数が効率的になりますが、他には何もありません-私の評決


どちらがより有利ですか?どちらも、アラート ビューを使用しているため、嫌いです。

于 2013-01-08T13:46:57.687 に答える
2
UIAlertView * alertBox = [[UIAlertView alloc] initWithTitle:@"Title"];

内部でメソッドを呼び出すコンストラクターに似た init メソッドを使用します.title

UIAlertView * alertBox = [[UIAlertView alloc] init];    
alertBox.title = @"Title";

最初のステートメントは、タイトルが nil のオブジェクト alertBox を作成します。2 行目では、独自のタイトルを指定します。

パフォーマンスの場合:

2 つ目は、2 つ目のステートメントを実行するために別のスタックを作成するため、2 つの余分な CPU 処理がプッシュおよびポップされます。最初は高速ですが、マルチコア プロセッサと呼び出し時間は実際に交渉可能です。

于 2013-01-08T13:45:48.700 に答える
0

その最初の行は、記述するコードが少ないだけで、どちらも同じことを行い、UIAlertView のコンストラクターです。私の意見では、最初の行からコンストラクターを実行する方が簡単です。これは、後で各プロパティを調べて追加するのではなく、すべてが 1 行にあるためです。

于 2013-01-08T13:47:27.843 に答える