如何从Objective-C调用具有隐藏变量名(u-before参数)或内部+;外部(例如foo(带条:))
我试图在我的Objective-C模块中使用Swift代码,并且已经:如何从Objective-C调用具有隐藏变量名(u-before参数)或内部+;外部(例如foo(带条:)),objective-c,swift,Objective C,Swift,我试图在我的Objective-C模块中使用Swift代码,并且已经: 进口的 在我打算在Objective-C中使用的每个类和函数前面设置@objc 然而,我仍在努力使用Objective-C中隐藏变量名(带下划线)或同时使用内部和外部变量名的Swift函数。在Objective-C中如何调用以下函数之一 Swift代码: @objc public final class FeedUpdateAttachmentHelper : NSObject { @objc func
- 进口的
- 在我打算在Objective-C中使用的每个类和函数前面设置@objc
@objc
public final class FeedUpdateAttachmentHelper : NSObject {
@objc
func myFunction(_ postMetadata: PostMetadata) {
...
}
@objc
func secondFunction(for postMetadata: PostMetadata) {
...
}
}
[myFunction postMetadata:postMetadata];
[secondFunction forPostMetadata:postMetadata];
我在Objective-C中如何称呼他们:
@objc
public final class FeedUpdateAttachmentHelper : NSObject {
@objc
func myFunction(_ postMetadata: PostMetadata) {
...
}
@objc
func secondFunction(for postMetadata: PostMetadata) {
...
}
}
[myFunction postMetadata:postMetadata];
[secondFunction forPostMetadata:postMetadata];
两者都给了我以下错误:
选择器“function/secondFunction”没有已知的类方法
通过CMD+CTRL单击
#import YourModuleName Swift.h
,您总能看到Swift类的Objective-C界面
在这种情况下,它看起来像:
@interface FeedUpdateAttachmentHelper : NSObject
- (void)myFunction:(PostMetadata * _Nonnull)postMetadata;
- (void)secondFunctionFor:(PostMetadata * _Nonnull)postMetadata;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
并且会这样使用:
-(void)doThing {
FeedUpdateAttachmentHelper *helper = [[FeedUpdateAttachmentHelper alloc] init];
PostMetadata *metadata = [[PostMetadata alloc] init];
[helper myFunction:metadata];
[helper secondFunctionFor:metadata];
}
通过CMD+CTRL单击
#import YourModuleName Swift.h
,您总能看到Swift类的Objective-C界面
在这种情况下,它看起来像:
@interface FeedUpdateAttachmentHelper : NSObject
- (void)myFunction:(PostMetadata * _Nonnull)postMetadata;
- (void)secondFunctionFor:(PostMetadata * _Nonnull)postMetadata;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
并且会这样使用:
-(void)doThing {
FeedUpdateAttachmentHelper *helper = [[FeedUpdateAttachmentHelper alloc] init];
PostMetadata *metadata = [[PostMetadata alloc] init];
[helper myFunction:metadata];
[helper secondFunctionFor:metadata];
}