objective-c - 有没有办法将数据从 block 保存到 ios obj-c 中的属性或外部对象

标签 objective-c ios ios5 ios4

我设计了一个类“AsyncHttpRequest”用于异步http请求处理,并且该类初始值设定项采用一个 block 作为参数。

该 block 是从“AsyncHttpRequest”类的以下委托(delegate)实现中调用的:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

   NSDictionary *dict = [NSJSONSerialization
        JSONObjectWithData:_dataResponseData //1
                   options:kNilOptions
                     error:&error];

   myBlock(dict); 

我正在从 View Controller 创建上述类的实例,如下所示

- (void)viewDidLoad {
    [super viewDidLoad];
__block NSDictionary *myDic; 

AsyncHttpRequest *r = [[AsyncHttpRequest alloc] initWithUrl:urlStr withBlock:^(NSDictionary *d){

        NSLog(@"List = %@",d);  //Its working
        NSDictionary *locDic = [[NSDictionary alloc] initWithDictionary:d]; 
         // the above is working

        myDic = d; //not working

        myDic = [[NSDictionary alloc] initWithDictionary:locDic]; 
            // The above code is not working..   
     }];
}

出现以下错误: 错误:地址不包含指向目标文件中的部分的部分

有没有办法将数据从 block 保存到 obj-c 中的属性或外部对象?

谢谢......我已经尝试了 3 个小时,但没有得到任何解决方案。

谢谢

最佳答案

我认为 myDic 可能在使用之前就被释放了。

这是我的推理,-[AsyncHttpRequest initWithUrl:withBlock:] 捕获了该 block ,但 myDic 未保留。在将来的某个时刻,connectionDidFinishLoading 方法会被调用,但到那时 myDic 变量现在已经超出范围,因为它已被释放。

有道理吗?

如果是这种情况,那么可能的解决方案可能包括:

  • 在将 myDic 传递给 -[AsyncHttpRequest initWithUrl:withBlock:] 方法之前保留它。注意:myDic应该是一个实例变量/
  • AsyncHttpRequest 上创建一个 NSDictionary 属性,并将该属性设置为 myDic

关于objective-c - 有没有办法将数据从 block 保存到 ios obj-c 中的属性或外部对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406346/

相关文章:

iphone - NSPredicate:如何在过滤器中插入特殊字符(@$&)

objective-c - 如何使用 zlib 压缩 NSData?

ios - Flurry AppSpot 测试广告未出现在设备上

ios - 无论如何,异步 NSURLconnection 是否有助于实时更新或向 iOS 应用程序中的服务器发送持续请求?

iphone - SQLite 数据库复制

objective-c - 为什么 Xcode 不自动为我添加 viewDidUnload?

objective-c - 添加 adMob 时架构的 undefined symbol

objective-c - 尝试连接字符串时无法静态分配接口(interface)类型

objective-c - Xcode - 如何使用项目模板创建简单的 Objective-C 应用程序?

ios - swift iOS : Programmatically create a responsive menu using UIButton and a View and constraints