Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Web视图的模式视图在iOS7中导致应用程序崩溃_Ios_Objective C_Ios7 - Fatal编程技术网

带有Web视图的模式视图在iOS7中导致应用程序崩溃

带有Web视图的模式视图在iOS7中导致应用程序崩溃,ios,objective-c,ios7,Ios,Objective C,Ios7,我已经在Objective-C中开发了两个月,所以我对这种语言和iOS环境非常陌生。我正在更新到iOS7,这是一个在iOS6上运行良好的应用程序 我得到了下一个错误,当一个内部有web视图的模态视图出现时,只有在iOS7中,而这在iOS6中起作用。里面有一个URL请求,但我找不到导致错误的原因 '-[__NSMallocBlock__ absoluteURL]: unrecognized selector sent to instance 0x16e8b020' 这是模态视图控制器上的VIEW

我已经在Objective-C中开发了两个月,所以我对这种语言和iOS环境非常陌生。我正在更新到iOS7,这是一个在iOS6上运行良好的应用程序

我得到了下一个错误,当一个内部有web视图的模态视图出现时,只有在iOS7中,而这在iOS6中起作用。里面有一个URL请求,但我找不到导致错误的原因

'-[__NSMallocBlock__ absoluteURL]: unrecognized selector sent to instance 0x16e8b020'
这是模态视图控制器上的VIEWWILLEXPEND方法:

- (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工具栏中的应用程序名称,然后从弹出菜单中选择“编辑方案…”)。在“诊断”选项卡的运行配置中,有一个用于激活僵尸对象的复选框。

什么是self.initialURL、NSString或NSURL什么是
self.initialURL
的数据类型?self.initialURL是NSURL的类型我们可以看到初始化/设置
self.initialURL
的代码吗?如何在调试器中确定值?尝试在if行上设置ab断点,然后在调试器中键入
po self.initialURL
,并逐字告诉我们结果是什么。谢谢,我要尝试一下。这不起作用,这使self.initialURL变量为NULL。你说的“made it NULL”是什么意思?你确定你刚刚激活了该复选框并再次运行了它吗?在iOS 7上运行激活了此选项的应用程序会给我一个空的self.initialURL变量,而在iOS 6中运行它可以正常工作。不,我不知道有任何更改。你在模拟器上做了两次运行吗?或者你可能使用了两种不同的设备?iPhone新64位处理器的内存管理实现可能有所不同。或者可能是您使用了不同版本的代码,比如
#如果uu IPHONE\u OS\u VERSION\u MAX\u ALLOWED>=70000
,这会导致您的代码有两个不同版本,而iOS 7版本有内存缺陷?