gpt4 book ai didi

ios - 为什么我不能使用 prepareForSegue 传递值?

转载 作者:可可西里 更新时间:2023-11-01 06:24:32 26 4
gpt4 key购买 nike

我有两个 UIViewControllers 。在一个 ViewController 我有代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"ToResetPwd_NumberSegue"])
{
ResetPwdBySmsCodeViewController* vc = (ResetPwdBySmsCodeViewController*)[segue destinationViewController];
vc.phone_no = _TF_phoneOrEmail.text;//TF_phoneOrEmail is a UITextField
vc.test = @"dagaga";
}

}

在B.h我有代码

@interface ResetPwdBySmsCodeViewController : UIViewController<UITextFieldDelegate>
@property (weak, nonatomic) NSString *phone_no;
@property (weak, nonatomic) NSString *test;
@end

在 B.m

我可以得到_test的值,但不能得到_phone_no

我确定 vc.phoneprepareForSegue

中运行良好

最佳答案

您应该将 B ViewController 中的 2 个属性声明为 strong 或更好的声明为 copy:

@interface ResetPwdBySmsCodeViewController : UIViewController<UITextFieldDelegate>
@property (strong, nonatomic) NSString *phone_no;
@property (strong, nonatomic) NSString *test;
@end

之所以能得到_test,是因为你给它赋了一个字面字符串值,这个值是编译器在特定的内存区域分配的。因此,它永远不会被释放,weak 变量将无限期地指向它(直到您显式地为 _test 分配一个新值,也就是说。)

另一方面,当您访问 weak 属性(因为 weak 属性在它指向的对象被释放时为 nil。)因此需要 strongcopy

关于ios - 为什么我不能使用 prepareForSegue 传递值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24710692/

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