隐藏来自 Swift 的 Objective-C 初始化程序(或方法)

Hide an Objective-C initializer (or method) from Swift

我有一个 Framework 有一个 Objective-C class 和一个指定的初始化器,它需要两个 NSArrays。在 Framework 中,我定义了一个 Swift 扩展,它提供了一个额外的初始化器,它接受一个元组数组而不是两个数组.

永久导入 Framework 时,是否可以从 中隐藏原始 Objective-C 初始值设定项Swift(因此只能使用采用元组数组的初始化程序)但在使用来自 [= 的 Framework 时保持可用35=]代码?

你可以:

YourApp-Brindging-Header.h

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

YourObjCObject.h

#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

@mattt 的回答:

Use the NS_SWIFT_UNAVAILABLE macro (available only on Xcode 7 and up).