gpt4 book ai didi

iphone - 从对象 init 的 GCD 安全地调用后面的 UIViewController 方法

转载 作者:行者123 更新时间:2023-11-28 22:29:08 24 4
gpt4 key购买 nike

感谢Lock a NSMutableArray of an object but not the rest of my object when using GCD我有一个用户对象,它在 init 时通过 gcd 填充位置数组,希望当我们以模态方式到达 LocationViewController 时,位置出现在 user.locations 中(用户沿着 viewcontrollers 传递) ),如果它们不存在,那么我只是在选择器中显示“正在加载...”。

理想情况下,我希望在 dispatch_sync 方法中从用户的 gcd 中强制刷新。我可以向 LocationViewController 添加一个方法来刷新选择器等,但我不确定如何安全地访问它。

如果位置不存在(即无),我的第一个想法是在 LocationViewController 中,然后在用户中设置对此 LocationViewController 的引用。在 dispatch_sync 中,如果 locCont 不是 nil,我可以调用方法 [locCont mymethod]。但是我不确定如何在用户类中设置该属性?

@property (strong, nonatomic) LocationsViewController * locCont;

让我担心的是用户可以随时注销并返回到 Root View 。然后我会设置

user.locCont = nil

ARC 会很好地排序任何宿醉内存吗?

我的另一个担忧是,如果他们不选择设置位置并在稍后查看,将会发生什么。我想我可以通过在 prepareforsegue 中将 user.locCont 设置为 nil 来解决这个问题。

如果用户到达那里,是否有更好的方法让 LocationsViewController 刷新?

最佳答案

我建议使用通知来避免“用户”对象和 View Controller 之间的强连接。

LocationViewController 将在其 init 方法中注册自定义通知并在 dealloc 中取消注册。

GCD 代码在完成时“发布”通知。这会导致所有听众收到通知,以便 LocationViewController 可以刷新其 View 。

请参阅 NSNotificationCenter 文档,以及 Send and receive messages through NSNotificationCenter in Objective-C?对于应该有助于开始的良好示例代码。

关于iphone - 从对象 init 的 GCD 安全地调用后面的 UIViewController 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17979152/

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