gpt4 book ai didi

ios - 可以让 ivar 存储对所有者的引用吗?

转载 作者:行者123 更新时间:2023-12-01 17:57:12 24 4
gpt4 key购买 nike

我有一个 View Controller ,它需要它的一个 ivars 在某个时候调用它的方法。 ivar 存储对其所有者的引用是否可以接受?这会导致任何问题吗?如果是这样,更好的方法?

// From MainViewController.h
#import <UIKit/UIKit.h>
#import "MyObject.h"

@interface MainViewController : UIViewController

@property (strong, nonatomic) MyObject *myObject;

@end

// From MyObject.h
#import <UIKit/UIKit.h>

@interface MyObject : NSObject

@property (strong, nonatomic) id myOwner;

@end

最佳答案

当 2 个对象彼此具有强引用时,这将创建保留循环 - 因此它们永远不会被释放(因此您将获得内存泄漏),除非您手动中断循环(例如,如果合适,在 viewWillDisappear 上将 myObject 属性设置为 nil)。

更好的方法是“子”对象将对其“所有者”有弱引用,因此您根本不会有保留循环:

@interface MyObject : NSObject

@property (weak, nonatomic) id myOwner;

@end

关于ios - 可以让 ivar 存储对所有者的引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15251278/

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