Objective c 对自动释放对象调用retain或release是否有意义或价值?

Objective c 对自动释放对象调用retain或release是否有意义或价值?,objective-c,Objective C,我有一些关于自动释放功能的问题 请给我一些建议 Q1)调用自动释放对象的retain或release是否有意义或价值 ex1) UIView *viewTest = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 400)] autorelease]; [self.view addSubview:viewTest]; 在这种情况下,viewtest对象将来会被释放吗? 或者需要添加一行“[viewTest release];” 例2

我有一些关于自动释放功能的问题

请给我一些建议

Q1)调用自动释放对象的retain或release是否有意义或价值

ex1) 
 UIView *viewTest = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 400)] autorelease];
[self.view addSubview:viewTest];
在这种情况下,viewtest对象将来会被释放吗? 或者需要添加一行“[viewTest release];”

例2)

在这种情况下,viewTest将自动释放

Q2)在哪里销毁自动释放的对象

Q1)调用自动释放对象的retain或release是否有意义或价值

不太可能,当自动释放池耗尽时,对象将被释放。看看

Q2)在哪里销毁自动释放的对象


NSAutoreleasePool
被排空时,或者在
@autoreleasepool
构造的末尾,自动释放的对象被销毁,这基本上做了相同的事情

autorelease
适用于您从方法返回对象等情况,因此调用方不需要在使用后释放它

您的ex2应该会导致问题,因为它确实发布了两次

当池排空时,自动释放的对象将被销毁

UIView *viewTest = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 400)] autorelease];
[viewTest release];