//1.获取URL,并创建请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:GET_URL]];
//异步,先执行block块外面的代码,项目中最常见的错误就是,在block外给_dictionary开辟空间,但是块内的 如果遇到tableView加载视图,把tableView写在block块内,直接使用,[self.tableView reloadData]; 如果是其他视图UIView,就需要把block内部的数据传递出来,更新视图。(请求完数据,一定要刷新)
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//解析数据
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
//预开辟空间
_dataArray = [[NSMutableArray alloc]initWithCapacity:5];
//字面量-本质上是便利构造器,语法糖:简化代码,缺点-》浪费资源
//点语法也是语法糖,动态的去判断是setter还是getter。
//语法盐:直接把消息发送过去。
//封装成Model对象
for (NSDictionary *dict in [dictionary objectForKey:@"news"]) {
News *news = [News new];
[news setValuesForKeysWithDictionary:dict];
[_dataArray addObject:news];
}
//校验
for (News *news in _dataArray) {
NSLog(@"%@",news);
}
//把这个_dataArray传递出去
[self test:_dataArray];
}];
NSLog(@"我先走,block内部再走");