Objective-C カテゴリに関連する、明らかに誤りである状況に対して、私はこれを取得し続けます。
注意: これは正常に機能していましたが、一晩で機能しなくなりました。
Xcode の「ファイル システムを読み取る」機能が根本的に壊れているようで、気が狂いそうです。強制的に...ファイルシステムを読み取る方法についてのアイデアは大歓迎です。
例えば:
- Xcode を起動し、ファイルを書き込んでインポートし、Xcode オートコンプリートを使用します。
- インポート行をcmdクリックすると、ヘッダーファイルにジャンプします
- 数回のビルド後、Xcode は「クラス メソッド '+stringFromCGPath:' が見つかりません (戻り型のデフォルトは 'id')」などの警告のフラグを立てます。
- インポート行を cmd-クリックすると、Xcode は「シンボルが見つかりません」というダイアログを表示します (世界で最悪のダイアログ ボックスですか? 確認すらありません。点滅して消えます)。
- アプリを実行すると、その行でクラッシュし、セレクターが認識されていないと表示されます
次に、FUBAR Xcode がどのように機能するかを証明します。
- Xcodeを終了し、再起動します
- Cmd-クリックが再び機能する
- ...しかし、警告は引き続き表示され、アプリは引き続きクラッシュします
- 数秒後、cmd-click が機能しなくなります
注意:私がチェックしたこと:
- ファイルはプロジェクト フォルダにありますか? はい
- .m ファイルはターゲットに含まれていますか? はい
- コンパイルするファイルのリストに .m ファイルがありますか? はい
- CLEAN を実行してから BUILD を実行しますか? はい
更新: インポートしようとしているヘッダーの例 - 数か月間インポートに成功し、何百ものビルドで正常に機能し、変更していません (SCM を使用して確認):
#import <Foundation/Foundation.h>
#import "CGGeometryExtensions.h"
@interface NSString(CGPath)
+(NSString*) NSStringFromCGPath:(CGPathRef) path;
@end
更新 2: 実際には、これは実行時にクラッシュしません。「NSStringFromCGPath:」の呼び出しにタイプミスがあったため、クラッシュしていました (大文字にする必要があるのに 1 文字が小文字でした)。しかし、ヘッダー ファイル全体が存在しないという XCode の主張のため、これを確認するのは困難でした。前述のように、IMPORT 行は Xcode によって自動生成されたにもかかわらずです。