2015-08-18 14 views
1

一個Objective-C初始化(或方法)我有一個框架與具有一個Objective-C的類與一種指定初始化它有兩個NSArray秒。在框架內部,我定義了一個擴展,它提供了一個額外的初始化器,它接受一個元組數組而不是兩個數組。隱藏夫特

當導入框架永恆,是有可能從隱藏原始Objective-C的初始化夫特(所以只有初始化服用元組的陣列可被使用),但使用時保持它可用框架 from Objective-C代碼?

回答

2

答:

使用NS_SWIFT_UNAVAILABLE宏(僅限於Xcode 7及以上)。

2

,你可以:

YourApp-Brindging-Header.h

#define __BRIDGING__ 
#import "YourObjCObject.h" 
#undef __BRIDGING__ 

YourObjCObject.h通過@mattt

#import <Foundation/Foundation.h> 

@interface YourObjCObject : NSObject 

@property (assign, nonatomic) NSInteger count; 

- (instancetype)initWithArray:(NSArray *)ary1 Array2:(NSArray *)ary2 NS_DESIGNATED_INITIALIZER 
#ifdef __BRIDGING__ 
NS_UNAVAILABLE 
#endif 
; 
@end 
+0

順便說一句,如果你從Swift中隱藏*指定的初始化方法*,你如何在Swift擴展方法中實現*方便的初始化方法? – rintaro

+0

是的,那是我的問題的一部分。我想在我自己的方便初始值設定器上使用它,但我想將它隱藏在別處。如果這是不可能的,我可以重新從Swift重新實現*指定的初始化器*。此外,還有一個問題,這是在一個框架內,它沒有橋頭(如[這裏]所述)(https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch的.html))。我的請求行爲是否可以爲框架的用戶實現? –

+0

或者換句話說,可以從預處理器宏中檢測到* Swift *的用法,而不需要在解決方案中手動定義'__BRIDGING__'。 –