Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.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
Iphone ObjC对象更改为随机对象:内存问题_Iphone_Objective C - Fatal编程技术网

Iphone ObjC对象更改为随机对象:内存问题

Iphone ObjC对象更改为随机对象:内存问题,iphone,objective-c,Iphone,Objective C,长时间侦听器,第一次调用 我有一个基本的记忆问题,我不明白,我相信你们中的任何人都会在一秒钟内看到。我正在四处玩,试图学习使用UIWebView的各种方法,从URL获取字符串,等等。具体来说,我正在尝试从另一个URL获取一个URL。换句话说,我已经将一个html页面上传到web,其中包含一个URL。该页面的地址被编码到应用程序中,给我一个应用程序的“钩子”——我可以随时更改该页面的内容并向应用程序发送新的URL。有道理吗 那么…检索URL?没问题。将其传递到字符串中供以后使用-没问题。但是,当我

长时间侦听器,第一次调用

我有一个基本的记忆问题,我不明白,我相信你们中的任何人都会在一秒钟内看到。我正在四处玩,试图学习使用UIWebView的各种方法,从URL获取字符串,等等。具体来说,我正在尝试从另一个URL获取一个URL。换句话说,我已经将一个html页面上传到web,其中包含一个URL。该页面的地址被编码到应用程序中,给我一个应用程序的“钩子”——我可以随时更改该页面的内容并向应用程序发送新的URL。有道理吗

那么…检索URL?没问题。将其传递到字符串中供以后使用-没问题。但是,当我设置了一个点击手势识别器,它应该获取该字符串,将其转换回NSURL,并在Safari中打开它时,我得到了一个运行时崩溃。一个NSLog调用告诉我,所讨论的字符串一直被分配给各种随机事件

下面是我代码的相关部分。我相信你们中的一些人会告诉我,有更好的方法来做我想做的事——这当然是受欢迎的。但我也很想知道我在这个特定的实现中做错了什么,因为我确信这是一个我想纠正的基本误解

提前谢谢。(对于代码块的格式,我很抱歉——我还没有完全掌握在这里发布的窍门!)


@结束

finalURL=[NSString stringWithContentsOfURL:firstUrl
编码:NSASCIIStringEncoding错误:&错误]

上面的一行创建了一个您不拥有的NSString实例(因为您没有调用名称中包含“new”、“alloc”、“retain”或“copy”的方法)。因此,当不再需要时,
finalURL
最终将被销毁。当您的
-foundTap:
方法运行时,
finalURL
已被解除分配,您只是在引用它以前所在的内存位置,现在它可能包含一些其他对象或随机数据


再次阅读内存管理指南,并学习运行静态分析器,该分析器应指出类似的错误。

finalURL=[NSString stringWithContentsOfURL:firstUrl
编码:NSASCIIStringEncoding错误:&错误]

上面的一行创建了一个您不拥有的NSString实例(因为您没有调用名称中包含“new”、“alloc”、“retain”或“copy”的方法)。因此,当不再需要时,
finalURL
最终将被销毁。当您的
-foundTap:
方法运行时,
finalURL
已被解除分配,您只是在引用它以前所在的内存位置,现在它可能包含一些其他对象或随机数据

再次阅读内存管理指南,并学习运行静态分析器,该分析器应该指出这样的错误

    #import "Messing_With_Web_ViewsViewController.h"

    @implementation Messing_With_Web_ViewsViewController

    @synthesize tapView;

    NSString *finalURL;


    - (void)viewDidLoad {
        [super viewDidLoad];

NSString *firstString = @"http://www.my_web_address.html";
//Of course, I have the correct address here.

NSURL *firstUrl = [NSURL URLWithString:firstString];

NSError * error;
finalURL = [NSString stringWithContentsOfURL:firstUrl 
    encoding:NSASCIIStringEncoding error:&error];
if ( finalURL )
{

    NSLog(@"Text=%@", finalURL);
    //everything fine up to here; console prints the correct
            contents of "my web address"
}
else 
{
    NSLog(@"Error = %@", error);
}


    //Taps
    UITapGestureRecognizer *tapRecognizer;
    tapRecognizer=[[UITapGestureRecognizer alloc] 
               initWithTarget:self
               action:@selector(foundTap:)];
    tapRecognizer.numberOfTapsRequired=1;
tapRecognizer.numberOfTouchesRequired=1;
    [tapView addGestureRecognizer:tapRecognizer];
    [tapRecognizer release];

    }


    - (void)foundTap:(UITapGestureRecognizer *)recognizer { 

NSLog(@"Trying to load %@", finalURL);
//at this point the app either crashes, or the console shows a random memory object
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: finalURL]];
    }


    - (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];
    }

    - (void)viewDidUnload {

    }


    - (void)dealloc {
[finalURL release];
[super dealloc];
    }