Ios 如何处理Objective-C模型关系中的循环引用
假设我有一个Ios 如何处理Objective-C模型关系中的循环引用,ios,objective-c,Ios,Objective C,假设我有一个User模型和一个Post模型。Post模型有一个User,而User模型可以有多个Posts 现在在Post细节控制器中,我有一个Post和相应的Post.user。用户是一个强引用,因为如果不是,用户对象就不会保留在内存中。我得到的后端响应类似于: response of post/:id { post fields user: {user fields} } 从Post详细控制器,我还可以转到User详细控制器,其中Us
User
模型和一个Post
模型。Post
模型有一个User
,而User
模型可以有多个Post
s
现在在Post
细节控制器中,我有一个Post
和相应的Post.user
。用户是一个强引用,因为如果不是,用户对象就不会保留在内存中。我得到的后端响应类似于:
response of post/:id
{
post fields
user: {user fields}
}
从Post
详细控制器,我还可以转到User
详细控制器,其中User
有一个Post
数组,这些Post被强保存在一个数组中。我必须把这些作为有力的参考,否则它们就不会留在记忆中
现在我的问题是,用户对帖子列表的响应在响应中没有用户字段,因此对于每个帖子
,我必须链接回已经对帖子
有强引用的同一用户
所以我的基本问题是,在某些情况下,我希望来自Post
->User
的关系是强的
,而在其他情况下,我希望它是弱的
现在,我在我的Post
模型中有两个属性,一个强属性和一个弱属性,并根据情况设置适当的属性
但是有更好的解决方案吗?您需要考虑哪个对象“拥有”另一个对象。除了内存管理,这就是strong
和weak
关键字所表示的。我会说,User
s自己的Post
s,因为拥有数千篇文章,每个人都拥有自己的用户,这会很奇怪——但拥有数千篇用户,每个人都拥有自己的文章,这是有道理的
所以,为什么不保留一个你遇到的用户的运行列表,每次你找到他们的帖子时,你都会添加一个对他们相应的User
对象的强引用。每篇文章都会对创建它的用户有一个弱引用。这不会导致帖子过早释放,因为只要保留用户列表,其中包含的所有帖子都将保留在内存中
希望这有帮助