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
对象的强引用。每篇文章都会对创建它的用户有一个弱引用。这不会导致帖子过早释放,因为只要保留用户列表,其中包含的所有帖子都将保留在内存中

希望这有帮助