Ios 如何在目标c中使用swift类(不是该类的实例)

Ios 如何在目标c中使用swift类(不是该类的实例),ios,objective-c,swift,Ios,Objective C,Swift,在objective-c应用程序中使用swift代码的所有教程都要经过本苹果文档中提到的这个过程 但是这种导入xyzProjectName swift.h文件然后使用 MySwiftClass *swiftObject = [[MySwiftClass alloc] init]; [swiftObject swiftMethod]; 要求我创建该swift类的实例。是否可以像[myswitclass switftmethod]那样直接访问类本身 直到现在我才能够做到这一点。我是否必须以某种方式

在objective-c应用程序中使用swift代码的所有教程都要经过本苹果文档中提到的这个过程

但是这种导入
xyzProjectName swift.h
文件然后使用

MySwiftClass *swiftObject = [[MySwiftClass alloc] init];
[swiftObject swiftMethod];
要求我创建该swift类的实例。是否可以像
[myswitclass switftmethod]那样直接访问类本身


直到现在我才能够做到这一点。我是否必须以某种方式更改swift代码才能实现此目的?

刚刚尝试了以下方法:

class MySwiftClass: NSObject {
    static func swiftMethod() -> String {
        return "hello"
    }
}
在目标C中:

NSLog(@"Received from Swift: %@", [MySwiftClass swiftMethod]);

对我有效-你确定你的
swifftmethod
static
,而不是
private
?您还可以尝试将
@objc
添加到
静态函数前面
——如果没有其他内容,至少它可能会在有原因无法从Objective-C访问时发出警告。

1。在表达式
[MySwiftClass alloc]
中使用Swift类“直接”(即向类对象本身发送消息)。你不觉得吗?2.你试过什么?你遇到了哪些问题?我的swift类中的这个函数只是根据我发送的字符串返回一个特定的uicolor(它在许多子类的应用程序中使用)。所以我不想在每个地方分配init,也不想在我所有的类中将它声明为全局ivar。只是想将其用作常规类方法。到目前为止,我一直无法直接访问它。它告诉我“没有已知的选择器'nameofmethodiamtryngtoaccess'的类方法@IshaanSejwal除了我回答中的简单函数外,我还使用Swift方法
static func makeColor(str:String)->UIColor
——在Objective-C中使用
[myswitclass makeColor:@“blue”]
Ok将静态放置在my
func
s
前面,让
s和
var
s工作(错误消失。甚至没有使用
@objc
).但我不知道为什么?你能告诉我以前发生了什么,以及当我使用
static
时它是如何变化的吗?据我所知,
static
用于在应用程序/进程的生命周期内保留一个对象,或者限制它不被子类使用。
static
在这种情况下如何应用?@IshaanSejwal
@objc
当您的类继承自Objective-C类时,它是隐式的,但您可以将其用于协议和全局函数,使它们从Obj-C可用。
static
意味着方法或属性特定于类本身,而不是类的实例(在许多其他语言中使用,例如Java)。如果没有
static
MySwiftClass.swiftMethod()
甚至无法在Swift中工作…