在 Swift 中访问静态 objective C 方法
Access static objective C method in Swift
在我的 Obj-C 文件中,我有这个静态成员和 getter :
//******* DBASplashViewController.m ********
static SWRevealViewController *staticRVC;
+ (SWRevealViewController*)currentSWRevealViewController
{
return staticRVC;
}
//******* DBASplashViewController.h ********
+ (SWRevealViewController*)currentSWRevealViewController;
在我的 swift 代码中,这一行有一个错误:
let SWVC = DBASplashViewController.currentSWRevealViewController
Error :
*DBASplashViewController has no member currentSWRevealViewController*
编辑:
这是我的桥接文件:
#import "DBASplashViewController.h"
如你所见,DBASplashViewController 被 XCode 完美解释,但不是静态方法:
我做错了什么?
注意currentSWRevealViewController
是一个方法,不是属性,如果你想执行它你应该使用下面的符号,基本上是加一对圆括号。否则这将 return 实际上是 (function).
的函数类型
let SWVC = DBASplashViewController.currentSWRevealViewController()
假设您有正确的桥接 Header 并且 staticRVC
变量按预期工作,这将起作用。
经过长时间的调查,我的桥接中似乎缺少导入 header。
DBASplashViewController.currentSWRevealViewController()
必须 return 类型为 SWRevealViewController 的 object。
看来我忘了在我的桥接中加入这条线 header :
#import "SWRevealViewController.h"
由于 return 类型定义在 Swift 部分,我可以访问我的静态变量。
在我的 Obj-C 文件中,我有这个静态成员和 getter :
//******* DBASplashViewController.m ********
static SWRevealViewController *staticRVC;
+ (SWRevealViewController*)currentSWRevealViewController
{
return staticRVC;
}
//******* DBASplashViewController.h ********
+ (SWRevealViewController*)currentSWRevealViewController;
在我的 swift 代码中,这一行有一个错误:
let SWVC = DBASplashViewController.currentSWRevealViewController
Error :
*DBASplashViewController has no member currentSWRevealViewController*
编辑:
这是我的桥接文件:
#import "DBASplashViewController.h"
如你所见,DBASplashViewController 被 XCode 完美解释,但不是静态方法:
我做错了什么?
注意currentSWRevealViewController
是一个方法,不是属性,如果你想执行它你应该使用下面的符号,基本上是加一对圆括号。否则这将 return 实际上是 (function).
let SWVC = DBASplashViewController.currentSWRevealViewController()
假设您有正确的桥接 Header 并且 staticRVC
变量按预期工作,这将起作用。
经过长时间的调查,我的桥接中似乎缺少导入 header。
DBASplashViewController.currentSWRevealViewController()
必须 return 类型为 SWRevealViewController 的 object。
看来我忘了在我的桥接中加入这条线 header :
#import "SWRevealViewController.h"
由于 return 类型定义在 Swift 部分,我可以访问我的静态变量。