2

最近、XCode 4.2 と Apple LLVM コンパイラ 3.0 / LLVM-GCC を使用して会社の iOS プロジェクトに取り組んでいるときに、いくつかの問題に対処しました。

以下はコードです

A.h
@interface A{
   int _count;
};
@property(nonatomic,assign) count; 
@end
A.mm
@implementation A
@synthesize count = _cont;//note a typo here !!!
//... I use _count in below code 
@end

タイプミスはコンパイル エラーや警告を生成しません。コンパイラまたはランタイム (実際には誰がそれを行ったのかはわかりませんが、私の推測ではコンパイラであるはずです) が _cont インスタンス ivar を生成します。

この機能は、カプセル化に最適です。私たちのヘッダーファイルはもっときれいになるはずです。しかし、そのようなタイプミスは気づきにくいです。この場合に警告を生成する設定があるかどうか疑問に思っていますか? Clang の公式サイトを検索しても何も見つかりませんでした。

クラスインターフェイスでインスタンスをまったく宣言せず、常にself.countを使用することを誰かが提案します。まず、私はこのコード スタイルが好きではありません。次に、「setCount」メソッドが単にインスタンス値を変更する以上のことを行う場合があります。最後に、この機能が導入される前に製品を開始しました。既存のコードのスタイルを変更したくありません。

ここで同じ問題に遭遇した人はいますか?良いアイデアやベストプラクティスはありますか?

4

1 に答える 1

0

これは不可能です。コンパイラはタイプミスをどのように認識すべきですか?

また、@ synthesize count = _count;のように、プロパティに独自のivarを作成する必要がなくなったことを認識しておく必要があります。コードの後半で_countを介してiVarに到達するにはすでに十分です。

于 2012-04-27T09:09:48.627 に答える