Objective c 对自动释放对象调用retain或release是否有意义或价值?
我有一些关于自动释放功能的问题 请给我一些建议 Q1)调用自动释放对象的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
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];