繁体   English   中英

Objective-C内存处理(iPhone)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM