Objective-C 和返回时自动释放

Posted

技术标签:

【中文标题】Objective-C 和返回时自动释放【英文标题】:Objective-C and autorelease on return 【发布时间】:2011-03-09 09:33:24 【问题描述】:

是两种方法

- (id) myFirstMethod

  NSObject* anObject = [[NSObject alloc] init];
  [anObject autorelease];
  return anObject;


- (id) mySecondMethod

  NSObject* anObject = [[NSObject alloc] init];
  return [anObject autorelease];

一样吗?

【问题讨论】:

这两种方法实际上都无效——对象周围的括号不正确。 @Chuck - 对,他们只是错别字。已编辑。 【参考方案1】:

是的,这两种方法是相同的。每当你写一个嵌套函数或多行相同的代码,编译后都是一样的。

【讨论】:

【参考方案2】:

你可以在回报中做任何事情:

- (id) myThirdMethod 
    return [[[NSObject alloc]init]autorelease];
    

【讨论】:

谢谢,我可以 - 但对我的眼睛来说太丑了:)【参考方案3】:

是的,它们是相同的,但它们所做的只是导致编译器错误。

[anObject] 是不允许的。而NSObject anObject 也是无效语法。

【讨论】:

以上是关于Objective-C 和返回时自动释放的主要内容,如果未能解决你的问题,请参考以下文章

Objective-c:从方法返回自动释放的对象

Objective-C 有没有办法判断一个对象是不是设置为自动释放?

Objective-C内存管理之自动释放池

Objective-C内存管理之自动释放池

Objective-C内存管理之自动释放池

Objective-C 自动释放池不释放对象