Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Objective-C调用具有隐藏变量名(u-before参数)或内部+;外部(例如foo(带条:))_Objective C_Swift - Fatal编程技术网

如何从Objective-C调用具有隐藏变量名(u-before参数)或内部+;外部(例如foo(带条:))

如何从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模块中使用Swift代码,并且已经:

  • 进口的
  • 在我打算在Objective-C中使用的每个类和函数前面设置@objc
然而,我仍在努力使用Objective-C中隐藏变量名(带下划线)或同时使用内部和外部变量名的Swift函数。在Objective-C中如何调用以下函数之一

Swift代码:

@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];
    
}