[objective-c]对象将变为 null 时传递到另一个视图控制器

标签: ios Objective-C
发布时间: 2016/10/4 3:29:24
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

在 iOS 应用程序,我需要将对象从一个视图控制器传递到另一个,然后切换到新视图控制器。目标是简单地传递信息。然而,该对象成为 NULL 和没有任何信息下, 一个视图显示了什么的时候? 可能的原因吗?

下面是代码的我的一部分。

#pragma mark - Table view delegate

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   BIDCourse *course = self.courses[indexPath.row];


   NSString *sub = course.subject;

   BIDSubjectMainTwoViewController *subjectController=[[BIDSubjectMainTwoViewController alloc] init];

   subjectController.title = sub;


   subjectController.course=course;

   [self.navigationController pushViewController:subjectController animated:YES];
}

BIDCourse *course是我自定义子类化 NSObject ,其中有一些 NSStrings ,并不是零,但当到下一个视图控制器上通过,它会成为 NULL

解决方法 1:

我遇到一个问题像你一样,当我将对象传递给另一个 viewController,它已被释放。

我认为这是一种缺陷的电ARC,ARC认为你 subjectController 可能是没有用的所以它释放 subjectController 。让你 subjectController 作为属性,所以电ARC不会释放当你将它传递给另一个 viewController。

如︰

#pragma mark - Table view delegate

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
BIDCourse *course = self.courses[indexPath.row];


NSString *sub = course.subject;

_subjectController=[[BIDSubjectMainTwoViewController alloc] init];

_subjectController.title = sub;


_subjectController.course=course;

[self.navigationController pushViewController:_subjectController animated:YES];
}
官方微信
官方QQ群
31647020