gpt4 book ai didi

ios - 为什么从另一个 View Controller 传递的弱属性会丢失?

转载 作者:行者123 更新时间:2023-12-01 18:23:09 25 4
gpt4 key购买 nike

我将类别 ID 传递给下一个 View Controller 。

NSNumber *childCategoryId = [[NSNumber alloc] initWithInt:category.id];

if ([destination respondsToSelector:@selector(setCategoryId:)]) {
[destination setValue:childCategoryId forKey:@"categoryId"];
}

在下一个 View Controller 中,接受数据的属性声明为
@property (weak, nonatomic) NSNumber *categoryId;

下viewDidLoad , 我用 编号 从互联网获取数据。
当 NSNumber 不太大(<15)时,它可以正常工作。
因此,这些代码能够在许多类别上工作,除了 的那些类别。编号 >=15

该问题可以通过更改 来解决。弱引用转强引用因此只要下一个 Controller 需要,就会保留 categoryId。我相信这个问题是由弱属性的损失引起的,但我不明白它的原因。

最佳答案

strong用于拥有该对象。它保留对象。鉴于 weak不保留它,它是 release d。

一个 引用您表示您不想控制对象的生命周期。您弱引用的对象仅存在,因为至少有一个其他对象持有对它的强引用。一旦不再是这种情况,对象就会被销毁,并且你的弱属性将自动设置为 nil。

一个 引用“拥有”您使用此属性/变量引用的对象。只要您(或任何其他对象)使用强引用指向它,编译器就会注意您分配给此属性的任何对象都不会被破坏。只有将属性设置为 nil 后,对象才会被销毁(除非一个或多个其他对象也持有对它的强引用)。

关于ios - 为什么从另一个 View Controller 传递的弱属性会丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15933613/

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