关于NSURLConnection的retainCount有点混乱

Car*_*Ray 1 iphone memory-management objective-c

先看看这些代码:

NSURL *url = [[NSURL alloc] initWithString:@"lasdhfkjasf"];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSURLConnection *_conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
NSLog(@"aaaaaaaaa  %d", [_conn retainCount]);
[url release];
[request release];
[_conn release];
Run Code Online (Sandbox Code Playgroud)

原来它打印"aaaaaaaaaaaaaa 2",不应该是1吗?或者那里有某种异常.然后我改变它:

NSURL *url = [[NSURL alloc] initWithString:@"lasdhfkjasf"];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSURLConnection *_conn = [[NSURLConnection alloc] init];
NSLog(@"aaaaaaaaa  %d", [_conn retainCount]);
[url release];
[request release];
[_conn release];
Run Code Online (Sandbox Code Playgroud)

我不知道发生在initWithRequest:delegate:方法中,有人知道吗?

lxt*_*lxt 6

虽然技术上不是尼古拉所关联的问题的副本,但同样适用:

不要使用retainCount属性

这可能是Apple给NSObject带来的最糟糕的事情,因为它的命名非常好,它让你觉得它实际上很有用.

查看您之前链接的问题 - Objective C NSString*属性保留计数奇怪 - 但查找第二个答案,评分最高的答案.