2016-09-14 5 views
2

Xcode 8では、Objective-Cがわずかに変更されました。クラスレベルのプロパティがあります。 NSBundleXcode 8、クラスレベルのプロパティを無効にする

@interface NSBundle : NSObject { 
... 

/* Methods for creating or retrieving bundle instances. */ 
#if FOUNDATION_SWIFT_SDK_EPOCH_AT_LEAST(8) 
@property (class, readonly, strong) NSBundle *mainBundle; 
#endif 

+ (nullable instancetype)bundleWithPath:(NSString *)path; 
- (nullable instancetype)initWithPath:(NSString *)path NS_DESIGNATED_INITIALIZER; 

+ (nullable instancetype)bundleWithURL:(NSURL *)url NS_AVAILABLE(10_6, 4_0); 
- (nullable instancetype)initWithURL:(NSURL *)url NS_AVAILABLE(10_6, 4_0); 

+ (NSBundle *)bundleForClass:(Class)aClass; 
+ (nullable NSBundle *)bundleWithIdentifier:(NSString *)identifier; 

#if FOUNDATION_SWIFT_SDK_EPOCH_AT_LEAST(8) 
@property (class, readonly, copy) NSArray<NSBundle *> *allBundles; 
@property (class, readonly, copy) NSArray<NSBundle *> *allFrameworks; 
#endif 
... 

メインバンドルを見用 例えば、ヘッダー。今度はpropertyと宣言されていますが、classというキーワードです。私はそれがclass level propertyの略だと思う。 OK。

スクロールダウンした後、これらのコードが見つかりました。

#define NSLocalizedString(key, comment) \ 
     [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:nil] 
#define NSLocalizedStringFromTable(key, tbl, comment) \ 
     [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:(tbl)] 

どのように、mainBundleにアクセスしますか。しかし、私はJetBrainsのAppCodeを使用しています。このIDEはこのような構造を無効なコードとして扱います。 ,,[NSBundle mainBundle]が無効になります。+ (instancetype)mainBundleメソッドが存在しません。

私の質問は、私は何とかXcodeのスイッチングずに古いObjectiveCスタイルのコーディングに切り替えることができます IS?あなたのIDE /コンパイラが、その後正しく[NSBundle mainBundle]をコンパイルされていない場合

+ (NSBundle *)mainBundle; 

(または同等:(静的アナライザとスウィフトAPIの生成を助け、いくつかの追加のメタデータを持つ)これと同等です

+0

だから、Xcodeのか、AppCodeについてのご質問はありますか? – Kreiri

+3

"' [NSBundle mainBundle] 'が無効になります"何に応じて無効ですか? "class property"宣言は、そのメソッドを宣言します。それは実際にはそうです。 –

答えて

2

短い答え:NO

しかし、これは単に問題を強調AppCodeです。コードはまだコンパイルする必要があります。構文解析ツールでエラーとしてマークされています。

それが固定されます際に知っておくyoutrackの問題に従ってください:https://youtrack.jetbrains.com/issue/OC-14107

+1

最新の2016.3 EAPで修正されました。 –

7
@property (class, readonly, strong) NSBundle *mainBundle; 

IDE /コンパイラが壊れています。

関連する問題