gpt4 book ai didi

cocoa - 要求 WebView 从不同的类加载网页

转载 作者:行者123 更新时间:2023-12-03 17:45:07 25 4
gpt4 key购买 nike

我有一个 WebView,我需要请求它从不同的类加载网站。因此我实现了以下功能:

-(void)performResearch:(NSString *)aString {  
NSLog(@"Received Request!");
[[researcher mainFrame]
loadRequest:[NSURLRequest
requestWithURL:[NSURL URLWithString:aString]]];
}

在我的其他类(class)中,我这样调用该函数:

Researcher *res = [[Researcher alloc] init];
[res performResearch:@"http://www.twitter.com"];
[res release];

我没有收到编译器错误,并且 NSLog 确实被调用,但是 WebView 没有加载网页。日志中也没有错误。我很困惑。

谁能告诉我出了什么问题吗?

最佳答案

-(void)performResearch:(NSString *)aString {  
NSLog(@"Received Request!");
[[researcher mainFrame]
loadRequest:[NSURLRequest
requestWithURL:[NSURL URLWithString:aString]]];
}

In my other class, I call the function like this:

Researcher *res = [[Researcher alloc] init];
[res performResearch:@"http://www.twitter.com"];
[res release];

performResearch:中,您在后面的代码中发送performResearch:消息的对象是selfresearcher 是其他一些变量;您正在与另一个对象交谈,该对象可能不是这位研究员。

your comment on Colin Gislason's answer ,你说researcher不是一个Researcher,而是一个WebView。您最好纠正这个不准确的变量名称选择。

将变量重命名为更准确的名称(例如 webView)后,您需要确保其中包含某些内容。仅仅拥有一个变量是没有帮助的;您需要有一个指向变量中对象的指针。否则,变量中的指针为 nil,并且发送给 nil 的消息根本不执行任何操作。它们不会崩溃、不会失败、不会成功、不会中断——执行会继续进行,就好像什么都没发生一样,因为它确实发生了。

你说这个变量是一个IBOutlet;这意味着您要连接 IB 中的 socket 。问题的一个可能原因是您忘记这样做,这将解释包含 nil 的变量。确保它已在 IB 中连接。

问题的另一个可能原因是该 Nib 尚未加载。如果 Researcher 对象拥有 Nib ,那么通常它有责任加载它,这意味着您需要这样做。如果某个其他对象正在加载一个同时包含 Researcher 和 WebView 的 Nib ,那么您在后一个代码片段中创建的另一个 Researcher 对象是错误的;第二个 Researcher 对象与 Nib 中的对象没有任何关系,也没有来自任何来源的 WebView。在后一种情况下,您必须删除 Researcher 对象的创建,并在 Nib 中使用该对象。

最后一个解决方案可能需要向其类托管第二个代码片段的对象添加一个导出。我不同意这个解决方案。很难说你应该做什么,因为我不确定 Researcher 对象适合 the MVC triumvirate 。我怀疑您需要更多地考虑它属于哪个类别;我认为它应该是一个 Controller ,并且您需要进行一些重构来重新建立权力之间的界限。

未能在应用程序中维护 MVC 通常会导致 Cocoa 比平常更难使用。

关于cocoa - 要求 WebView 从不同的类加载网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2347658/

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