对于我们的应用程序,我们有一个复杂的全局数据对象。让我们调用这个对象A.对象A有一个强大的非原子数组,对象为B类,我们可以将它们称为B1,B2,B3等。这些B对象中的每一个都可以再次拥有一个数组,类型为C的对象,比如C1 ,C2等...
现在,当我们在应用程序的第一次启动时创建这个复杂的结构时,C对象异步开始下载图像等。当这个过程完成时,它会调用一个委托函数。这个"完成加载活动"代表设置后明确启动!通过单例模式访问该对象。
但是,当它完成时,C对象中的委托是nil。
我们认为它与引用该对象有关。我们设置委托的那一刻,我们只需通过
设置C对象委托[[A objectAtIndex:x] objectAtIndex:y].delegate = self;
然而,当C的加载结束,我们检查委托是什么时,它是零。 ObjectAtIndex是一种只读方法。对象C本身也可能包含一个数组,使树更深。
如何解决这个问题?我们可以得到一个"参考"到数组中的对象而不是" copy"?
其他信息:
以上信息是任意的,而不是实际的代码。它只是给人一种正在发生的事情的印象。
问题是复杂树中应该有一个对象,但是当我调整此对象并稍后再次检查时,调整未应用。
代表声明:
@property (strong,nonatomic) id<HKWidgetModel> delegate;
答案 0 :(得分:0)
我应该使用阻止而不是代理来避免这种共谋。