gpt4 book ai didi

objective-c - 关联对象会自动释放吗?

转载 作者:IT王子 更新时间:2023-10-29 08:21:21 25 4
gpt4 key购买 nike

注意:这个其他问题似乎相关但不是:When does an associated object get released?

我正在向 UIView 实例添加第二个描述,如下所示:

- (void) setSecondDescription:(UIView*)view description2:(NSString*)description2 {
objc_setAssociatedObject (view,&key,description2,OBJC_ASSOCIATION_RETAIN);
}

- (NSString*) secondDescription:(UIView*)view {
return (id)objc_getAssociatedObject(view, &key);
}

如果 UIView 释放,关联的描述 2 会被释放吗?有什么方法可以让它自动发生吗?

最佳答案

如果您想真正查看整个 dealloc 时间线的描述,请查看 WWDC 2011,Session 322,36:22。然而,这是基本的概要(我想记住它,所以这是我的一段代码中的实际注释)。

请注意,关联对象在生命周期结束时被释放。

// General Information
// We take advantage of the documented Deallocation Timeline (WWDC 2011, Session 322, 36:22).
// 1. -release to zero
// * Object is now deallocating and will die.
// * New __weak references are not allowed, and will get nil.
// * [self dealloc] is called
// 2. Subclass -dealloc
// * bottom-most subclass -dealloc is called
// * Non-ARC code manually releases iVars
// * Walk the super-class chain calling -dealloc
// 3. NSObject -dealloc
// * Simply calls the ObjC runtime object_dispose()
// 4. object_dispose()
// * Call destructors for C++ iVars
// * Call -release for ARC iVars
// * Erase associated references
// * Erase __weak references
// * Call free()

关于objective-c - 关联对象会自动释放吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10842829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com