4
//header-file
#import <Foundation/Foundation.h>
extern UIColor *const COLOR_BACKGROUND;

//implementation-file
#import "Constants.h"
UIColor *const COLOR_BACKGROUND= [UIColor greenColor];

.m ファイルでこれを試みると、コンパイル時の定数ではないため、エラーが発生します。実装ファイルを .mm に変更すると、この問題が解決します。しかし、私が知っておくべき癖はありますか (私は C++ についてほとんど無知であり、誰もこれを行っているのを見たことがありません)。

4

2 に答える 2

2

私の意見では、2 つの欠点があります。

1. 初期化順序

C++ の静的初期化子のよく知られた問題は、初期化順序です。色やフォントを扱う場合、これはおそらく大したことではありません。しかし、所有しているオブジェクトが関与するとすぐに、あるインスタンスのコンストラクターが別の静的オブジェクトにアクセスすると、すぐに混乱する可能性があります。

2. Objective-C++自体

このスタイルを使用すると、Objective-C++ にバインドされます。(純粋な) Objective-C を使用しないと、他の開発者と共同で作業したり、別の場所のコードを使用したりするときに、扱いにくく、エラーが発生しやすくなります。2 つの言語には多くの微妙な違いがあり、特に両方の言語にあまり慣れていない場合は、それらの多くに悩まされます。

Objective-C++ を使用する価値があるシナリオは間違いなくありますが、便宜上だけでは使用しません。

于 2013-07-08T14:31:17.350 に答える