在很多NSURLConnection
示例中,我看到以下几行:
NSURLConnection *theConnection = [[NSURLConnection alloc]initWithRequest:theRequest delegate:self];
if(theConnection)
{
webData = [[NSMutableData data]retain];
}
else
...
我想知道 - 这应该做什么?为什么它有效?我认为data
是一个访问器方法,因为你没有在一个实例化的对象上调用它,它将返回nil
,并保留它实际上什么都不做。
这是我看到的关于连接数据的方式:
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:url] delegate:self startImmediately:YES];
if( connection )
{
while (!finished) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}
}
finished
是一个在YES
上设置为connectionDidFinishLoading:
的ivar
任何人都可以为我清除这个吗?哪个应该使用,有什么区别?
答案 0 :(得分:0)
[NSMutableData data]
不是访问者,而是所谓的类方法。您可能知道[NSMutableData alloc]
,它也是一个类方法,意味着它与类绑定,但不是实例。表示方法是类方法的典型方法是在前面添加加号:+[NSMutableData data]
。
在这种情况下,该方法继承自NSData
类(但确实返回NSMutableData
实例,因为您在该类上调用它。)
实现可能如下所示:
@interface NSMutableData
+ (id)data
{
return [[[self alloc] init] autorelease];
}
@end
请注意,self
在这种情况下是NSMutableData
类。
在其他语言中,如C ++,C#和Java(AFAIK),这些是您使用static
关键字指定的方法。