[英]Objective-C Memory Handling (iPhone)
我不能说我真的很了解Objective-C中的内存处理,所以对此我有几个问题。
我是否必须在下面的框中删除对象“ url”和“ urlRequest”,还是由“ urlConnection”承担责任?
NSURL* url = [NSURL URLWithString:url]; NSURLRequest* urlRequest = [[NSURLRequest alloc] initWithURL:url]; NSURLConnection* urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
以下对象创建之间有什么区别? 是裁判。 在所有情况下都保留柜台?
[[NSString alloc] init]; [[NSString alloc] initWithFormat:...]; [NSString stringWithString:...];
分配属性时,是引用。 计数始终保留,无论是将“分配”还是“保留”设置为属性?
一般来说,如果通过开始分配,新建或复制的方法获得对象,则您有责任释放该对象。 因此,在您的第一个查询中,您将需要释放urlRequest和urlConnection。 url对象是不需要释放的对象的示例,因为它是使用静态工厂方法(URLWithString)实例化的。
[[NSString alloc] init];
将初始化一个带有1个视网膜计数的NSString。
[[NSString alloc] initWithFormat:...];
同样,结果将得到保留计数为1的NSString。唯一的区别是您调用了另一个初始化程序。
[NSString stringWithString:...];
创建一个自动释放的NSString,保证在当前事件循环期间保持有效。
至于属性属性,assign将不会保留传递给setter的对象。
我知道它有些枯燥,但是《 内存管理指南》对于此类问题确实是一个很好的参考。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.