Jac*_*nkr 2 nsurl ios automatic-ref-counting
我正在制作一个NSURL并将它传递给一个选择器,然后将它传递给另一个选择器,等等.当它到达它的位置时,它记录得很好,但在使用它时给出一个sigabort.我怀疑这意味着我的对象已被ARC释放.我怎样才能确保它能够长时间保持使用?
__strong NSURL *url = [[NSURL alloc] initWithString:str];
... passes to a selector
... passes to another
... and then to fetchVideoContent
- (void)fetchVideoContent:(NSURL *)url withGUID:(NSString *)guid;
{
NSMutableURLRequest *req;
req = [NSMutableURLRequest requestWithURL:url // <-- DIES ON THIS LINE (SIGABRT)
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:30.0];
...
Run Code Online (Sandbox Code Playgroud)
这是我能想到的"最强"的东西,但仍然无效.有什么建议?
当url对象在fetchVideoContent方法结束时,你需要确保初始url变量(__strong NSURL*url)继续存在,如果没有,你将得到你正在描述的错误.听起来像你在方法中创建url对象,使用局部变量,然后通过几个方法传递该对象,这些方法要么交叉到新线程,要么转到runloop的末尾并返回到下一次运行.
例如,如果通过您省略的步骤,当前运行循环结束,并且初始url变量超出范围,则将释放url对象,因为实际上没有任何东西实际上保留它.将对象传递给另一个方法是不够的,因为不会在参数上调用retain.
简短的版本是,确保某些东西保存在url上,你可以使它成为你的类的属性,实例变量甚至是静态的,如果你一次只使用一个类的实例.
| 归档时间: |
|
| 查看次数: |
2080 次 |
| 最近记录: |