0

Objective-C プロジェクト用に一連の匿名関数を作成しています (つまり、これらの関数はクラス固有ではなく、実装は隠されています)、興味深い問題に遭遇しました...

私はマクロ関数を持っています: div(c)((CGFloat)c/255.0f) この使用法はほとんどの場合 div(0.0f) のようなものですが、他の人はそれが float を取ることを知らないかもしれないので div(0) が可能です

私が持っている質問はこれです:変数が明示的にキャストされ、変数がキャストと同じ型である場合、パフォーマンスはキャストに失われますか?

4

2 に答える 2

1

キャストはプロミスであり、データ型でもメソッドでも拡張でもありません。型についてコンパイラを快適にしているだけです。実行に関して何も変更すべきではないため、実行に関して最適化するものは何もありません。要求したパラメーターの型が気になる場合は、操作する前に別の CGFloat にいつでも明示的に格納できます。

于 2013-01-02T22:44:46.397 に答える
0

マシンはメモリで動作します。最後に、使用する変数はすべて生のバイトです。

では、なぜ Objective-C には型があるのでしょうか? コンパイル時にプログラマーを保護し、エラーと警告を表示します。

実行時にはすべての操作がメモリ上で行われるため、キャストのオーバーヘッドについて心配する必要はありません。

于 2013-01-02T22:56:50.777 に答える