隐藏来自 Swift 的 Objective-C 初始化程序(或方法)
Hide an Objective-C initializer (or method) from Swift
我有一个 Framework 有一个 Objective-C class 和一个指定的初始化器,它需要两个 NSArray
s。在 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).
我有一个 Framework 有一个 Objective-C class 和一个指定的初始化器,它需要两个 NSArray
s。在 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).