Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c ARC中的IBOutlet释放并设置为零。如何避免这种情况?目标c_Objective C_Ios_Storyboard_Automatic Ref Counting - Fatal编程技术网

Objective c ARC中的IBOutlet释放并设置为零。如何避免这种情况?目标c

Objective c ARC中的IBOutlet释放并设置为零。如何避免这种情况?目标c,objective-c,ios,storyboard,automatic-ref-counting,Objective C,Ios,Storyboard,Automatic Ref Counting,我不熟悉ARC和故事板。我已从我的UIViewController将IBOutlet设置为UITableView。 一段时间后,我的IBOutlet设置为nil,我无法从其他类重新加载它。 这是我的数据表IBOutlet: @property (weak, nonatomic) IBOutlet UITableView *dataTable; 在开始时,dataTable不是nil,但在我尝试从另一个类(通过appDelegate)访问它时不是。如何解决这个问题 更新 我从我的UIViewCo

我不熟悉ARC和故事板。我已从我的
UIViewController
IBOutlet
设置为
UITableView
。 一段时间后,我的
IBOutlet
设置为nil,我无法从其他类重新加载它。 这是我的
数据表
IBOutlet

@property (weak, nonatomic) IBOutlet UITableView *dataTable;
在开始时,
dataTable
不是
nil
,但在我尝试从另一个类(通过appDelegate)访问它时不是。如何解决这个问题

更新 我从我的
UIViewController

[appDelegate.myClass loginWithUserName:loginField.text andPassword:pwdField.text];
完成后,我有数据要显示,我从
loginWithUserName
方法调用此代码:

   MyViewController *controller = [[AppDelegate sharedStoryboard] instantiateViewControllerWithIdentifier:@"MyViewController"];
   [controller audioLoaded];
这是我的
UIViewController
中的方法,它会重新加载数据

 -(void) audioLoaded
 {
    //it is nil here
    [self.dataTable reloadData];
 }

将属性设置为“强保留对象”:

@property (strong, nonatomic) IBOutlet UITableView *dataTable;
但是,从另一个视图控制器访问UITableView不是一个好的做法

编辑:

您应该重新考虑整个方法,将该逻辑从appdelegate移动到将执行登录的专用类。您可以创建一个简单的协议,UIViewController和表可以实现该协议,然后在调用login方法时,传递对当前viewcontroller的引用,如

loginWithUserName:andPassword:andCaller:(id<LoginDelegate>)sender
这样你就可以打电话了

[sender audioLoaded];

+1.您真的不应该访问另一个视图控制器的nib文件。不,不。我从其他类调用方法reloadMyDataTable。此方法在同一UIViewControllery中,您仍在对不可见的表视图执行操作。无需从其他视图控制器执行此操作。你不能在视图上重新加载数据吗?会出现吗?但是我的UIViewController是聚焦的,它没有消失。strong没有帮助,它是nil,在代码中实例化一个新的视图控制器,您没有引用一个已经可见的视图控制器,因此当您调用它时,UITableView仍然是nil。您应该重新考虑整个方法,将该逻辑从appdelegate移动到将执行登录的专用类。然后,在调用login方法时,传递对当前viewcontroller的引用,类似于loginWithUserName:andPassword:andCaller:(id)sender。。。这样,您只需调用[sender audioLoaded];您确定已在interface builder中连接了所有适当的插座吗?是的,我确定。我认为实例化eviewcontrollerwhidentifier中存在问题
[sender audioLoaded];