gpt4 book ai didi

ios - 无法在扩展 Objective - C 类的 Swift 类中访问私有(private)变量

转载 作者:行者123 更新时间:2023-11-28 08:38:54 27 4
gpt4 key购买 nike

我们的应用是使用 Cordova 的混合应用。因此,很多逻辑都在 webview 中完成。

我遇到了一个需要访问 webview 对象的场景。

问题是我拿不到它!

这是基类CDVPlugin.h:

@interface UIView (org_apache_cordova_UIView_Extension)

@end

// Stuff

@interface CDVPlugin : NSObject {}

@property (nonatomic, readonly, weak) UIView* webView; // This is what I want

深入研究 CDVPlugin.m 文件,它看起来像这样:

@interface CDVPlugin ()

// Other codes

- (UIView*)webView
{
if (self.webViewEngine != nil) {
return self.webViewEngine.engineWebView;
}

return nil;
}

我扩展 CDVPlugin 的 Bridge.swift 文件如下所示:

@objc(Bridge) class Bridge:CDVPlugin
{
func getWebView() -> UIWebView
{
self.webView // Does not exist
}
}

我更加困惑了,因为它的其他子类能够访问这个 webView 变量。例如这个插件类:

#import "CDVPlugin.h"

@interface CDVGestureHandler : CDVPlugin

@property (nonatomic, strong) UILongPressGestureRecognizer* lpgr;

@end

能够访问私有(private)方法就好了吗?

#import "CDVGestureHandler.h"

@implementation CDVGestureHandler

- (void)pluginInitialize
{
NSArray *views = self.webView.subviews;
}

我不确定为什么其他一些 Objc 类能够从其父类访问私有(private)方法,或者为什么我不能从扩展它的 Swift 类访问它。

如果您能告诉我如何访问这个 webView 对象,我会洗耳恭听!

测试表明自己如何无法访问它但一个实例可以。 enter image description here

最佳答案

轻微的 derp 时刻。

我的类(class)使用的是全局函数,因此它无法访问成员变量。错误信息让我偏离了方向。

"Instance member cannot be used on type Bridge".

我现在明白了,这意味着它是类函数中的实例访问。我想知道是不是黑暗之魂3的博学者写了编译错误。

关于ios - 无法在扩展 Objective - C 类的 Swift 类中访问私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36877808/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com