gpt4 book ai didi

ios - 具有 Web View 的模态视图使应用程序在 iOS7 中崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:19 26 4
gpt4 key购买 nike

我已经用 Objective-C 开发了两个月,所以我对这种语言和 iOS 环境还很陌生。我正在将一个适用于 iOS6 的应用程序更新到 iOS7。

当呈现内部带有 Web View 的模态视图时,我收到下一个错误,仅在 iOS7 中可用,而这在 iOS6 中有效。里面有一个 URL 请求,但我找不到导致错误的原因。

'-[__NSMallocBlock__ absoluteURL]: unrecognized selector sent to instance 0x16e8b020'

这是模态视图 Controller 上的 viewWillAppear 方法:

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

if (!self.webView.request) {
//THE NEXT LINE THROWS THE ERROR
NSURLRequest *req = [[NSURLRequest alloc] initWithURL:self.initialURL];
[self.webView loadRequest:req];
}
}

也许我在做一些愚蠢的事情,但现在我真的不知道该看哪里。

如果有人以前经历过类似的事情,我将不胜感激。提前致谢。

编辑:

@interface MyViewController ()
@property (copy, nonatomic) NSURL *initialURL;
@end

@implementation MyViewController

- (id)initWithURL:(NSURL *)initialURL
{
self = [super init];
if (self) {
_initialURL = initialURL;

_webView = [[UIWebView alloc] init];
_webView.backgroundColor = [UIColor clearColor];
_webView.opaque = NO;
_webView.delegate = self;
[self.view addSubview:_webView];

self.modalPresentationStyle = UIModalPresentationFormSheet;
self.view.backgroundColor = [UIColor whiteColor];
}
return self;
}

方法调用:

self.modalWebViewController = [[[MyViewController alloc] initWithURL:url] autorelease];

最佳答案

我假设 iOS 在传递给 initWithURL: 方法的 self.initialURL 对象上调用 absoluteURL。但是,接收此消息的对象是一个NSMallocBlock,因此似乎有问题。我假设您的 self.initialURL 对象应该是 NSURL 类型。如果是这样,则表明存在内存管理问题,导致 self.initalURL 的指针指向内存中的其他位置(而不是您希望它指向的对象)。

您可以尝试使用 NSZombiesEnabled 运行您的应用程序,它可以防止任何对象被实际释放,而是在仍然访问已删除的对象时发出警告。您可以在方案中激活 NSZombies 以运行您的应用程序(在 Xcode 右上角的工具栏中单击您的应用程序的名称,然后从弹出菜单中选择“编辑方案...”)。在“诊断”选项卡的运行配置中,有一个用于激活僵尸对象的复选框。 enter image description here

关于ios - 具有 Web View 的模态视图使应用程序在 iOS7 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20685424/

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