我已经在Objective-C中进行了两个月的开发,因此对于这种语言和iOS环境我还是很陌生。我正在将适用于iOS6的应用程序更新到iOS7。
当仅在iOS7中显示带有Web视图的模式视图时,出现下一个错误,这在iOS6中有效。里面有一个URL请求,但我找不到导致错误的原因。
'-[__NSMallocBlock__ absoluteURL]: unrecognized selector sent to instance 0x16e8b020'
这是模态视图控制器上的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];
我假设iOSabsoluteURL
对self.initialURL
传递给该initWithURL:
方法的对象进行了调用。但是,接收此消息的对象是NSMallocBlock
,因此似乎出了点问题。我认为您的self.initialURL
对象应为类型NSURL
。如果是这样,则表明存在内存管理问题,导致的指针指向self.initalURL
内存中的其他位置(而不是您希望其指向的对象)。
您可以尝试使用NSZombiesEnabled运行应用程序,这可以防止实际释放任何对象,而是在仍然访问已删除对象的情况下警告您。您可以在方案中激活NSZombies来运行您的应用程序(在右上角Xcode的工具栏中单击您的应用程序名称,然后从弹出菜单中选择“编辑方案...”)。在“诊断”选项卡的运行配置中,有一个用于激活Zombie对象的复选框。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句