Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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中导入Swift协议_Swift_Objective C - Fatal编程技术网

如何在Objective-C中导入Swift协议

如何在Objective-C中导入Swift协议,swift,objective-c,Swift,Objective C,在我的swift课程中,我有下一个协议: @objc public protocol MyDelegate: AnyObject { ... } 我需要从头文件而不是.m文件访问该协议。 我该怎么做 我在SO中发现了一些案例,并尝试将它们作为 #import <ModuleName/ModuleName-Swift.h> #导入 及 @import myswitclass 但我仍然无法在Obj-C中的.h文件中使用该协议。 如何解决此问题?从.h文件中生成的头引用Swift类或

在我的swift课程中,我有下一个协议:

@objc
public protocol MyDelegate: AnyObject { ... }
我需要从头文件而不是
.m
文件访问该协议。 我该怎么做

我在SO中发现了一些案例,并尝试将它们作为

#import <ModuleName/ModuleName-Swift.h>
#导入

@import myswitclass

但我仍然无法在Obj-C中的
.h
文件中使用该协议。
如何解决此问题?

.h
文件中生成的头引用Swift类或协议将创建循环引用,因此不可能。苹果建议使用转发声明并在
.m
文件中进行实际导入

当Objective-C头文件中的声明引用来自同一目标的Swift类或协议时,导入生成的头文件将创建循环引用。为了避免这种情况,请使用Swift类或协议的转发声明在Objective-C接口中引用它


换句话说,您想要的(至少目前)是不可能的。

.h
文件中生成的头引用Swift类或协议将创建循环引用,因此不可能。苹果建议使用转发声明并在
.m
文件中进行实际导入

当Objective-C头文件中的声明引用来自同一目标的Swift类或协议时,导入生成的头文件将创建循环引用。为了避免这种情况,请使用Swift类或协议的转发声明在Objective-C接口中引用它


换句话说,您想要的是(至少目前是)不可能的。

是可能的,您只需要在
.h
文件中使用
@protocol MyDelegate
@DávidPásztor yes,同意,这是可能的。但通过远期声明可以避免周期性引用。就像您可以使用
@class
一样。swift协议需要依赖于对象。就我记忆所及,任何物体都是如此。然后您仍然使用
#import
,但如果可以,您只需要在
.h
文件中使用
@protocol MyDelegate
@DávidPásztor yes,同意,这是可能的,在
.h
文件中向前声明协议。但通过远期声明可以避免周期性引用。就像您可以使用
@class
一样。swift协议需要依赖于对象。就我记忆所及,任何物体都是如此。然后仍然使用
#导入
,但要导入到
.m
文件中