我们说我有一个User
模型和一个Post
模型。 Post
模型有一个User
,User
模型可以有多个Post
。
现在在Post
详细信息控制器中,我有一个Post
和相应的Post.user
。用户是一个强大的参考,因为如果它不是用户对象将不会留在内存中。我得到的后端响应是这样的:
response of post/:id
{
post fields
user: {user fields}
}
在Post
详细控制器中,我还可以转到User
详细控制器,其中User
的数组Posts
强烈保留在数组中。我必须将这些作为强有力的参考,因为否则他们不会留在记忆中。
现在我的问题是,用户对Posts
列表的响应在响应中没有用户字段,因此对于每个Post
,我必须链接回已经强烈引用Post
。
所以我的基本问题是,在某些情况下,我想要Post
- >之间的关系。 User
为strong
,而在其他情况下,我希望它为weak
。
目前,我在Post
模型中有两个属性,一个是强大的,一个是弱的,根据情况,我设置了相应的属性。
但是有更好的解决方案吗?
答案 0 :(得分:1)
你需要考虑哪个对象“拥有”另一个。除了内存管理,这就是strong
和weak
关键字所指示的内容。我会说User
拥有Post
s,因为拥有成千上万的帖子每个人拥有自己的用户会很奇怪 - 但是有数千名用户各自拥有自己的帖子才有意义
那么为什么不保留您遇到的用户的运行列表,每次找到其中一个帖子时,都会添加对相应User
对象的强引用。每个帖子都会对创建它的用户有一个弱引用。这不会导致帖子过早释放,因为只要您保留用户列表,其中包含的所有帖子都将保留在内存中。
希望这有帮助!