带有Web视图的模式视图在iOS7中导致应用程序崩溃
我已经在Objective-C中开发了两个月,所以我对这种语言和iOS环境非常陌生。我正在更新到iOS7,这是一个在iOS6上运行良好的应用程序 我得到了下一个错误,当一个内部有web视图的模态视图出现时,只有在iOS7中,而这在iOS6中起作用。里面有一个URL请求,但我找不到导致错误的原因带有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
'-[__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版本有内存缺陷?