|
初学者,看着官方教程做的,成功也是成功了。但是有点疑问,请各位大神指教。
-(void)doProcess{
NSString *urlString = @"https://api.weibo.com/2/statuses/public_timeline.json";
NSURL *url=[[NSURL alloc]initWithString:urlString];
NSMutableURLRequest *request=[[NSMutableURLRequest alloc]init];
[request setURL:url];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if(connection)
{
receiveData = [[NSMutableData data] retain];
NSLog(@"intial done!");
}
else
{
NSLog(@"sorry");
}
}
问题1: 问题2: |
|
![]() 10分 |
问题1
多线程操作同一块数据,看你有没有做线程保护 问题2 NSMutableData 的类方法data直接可以取,只需要retain加1,保证到时正确回收,而每次 alloc 的话 开销很大啊 |
![]() 10分 |
1.receiveData 是在你请求 connection 请求之后初始化的,而recv的delegate操作,是在你receive res之后,显然两者有明显的先后顺序,不可能有nil的可能。
2.receiveData 的初始化,receiveData = [[NSMutableData data] retain]是静态方法,系统会自动回收,而且alloc出来,是要手动释放掉。alloc的效果和retain的结果,其实是差不多的,retaincount也是相同的。至于ls说的,开销很大,receiveData只有被创建一次,没有开销很大的可能。我感觉。 |
![]() |
代码似乎有问题
|

