我有一个随机生成的int,我在ViewWillAppear的故事板上分配给UIImageView的标签。
当我转到主菜单并尝试再次进入视图时,应用程序崩溃了。我知道它是因为标签,因为当我删除它时一切正常。
为什么它第一次有效而不是在那之后的时间有任何想法?代码如下。
ViewController.h:
@interface ViewController : UIViewController{
int tagnumber;
IBOutlet UIImageView *box;
...
}
ViewController.m:
-(void)viewWillAppear:(BOOL)animated{
tagnumber = arc4random()%1000;
box.tag = tagnumber;
...
}
- (IBAction)unwindToThisViewController:(UIStoryboardSegue *)unwindSegue
{
[_animator removeAllBehaviors];
[box removeFromSuperview];
}
MainMenu.m:
-(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue {
}
答案 0 :(得分:0)
基本上,当视图消失且系统内存不足时,它将调用UIViewController的didReceiveMemoryWarning
实现。这里有一个很好的描述:ViewWillDisappear versus dealloc
当您创建IBOutput时,您应该通过说@property (weak, nonatomic) IBOutlet UIImageView *box
来指向它。视图保留其子视图,因此,如果视图被取消分配,其子视图会将计数减少一个。当视图消失时,系统将决定何时取消分配self.view,如果取消分配,它将自动释放框,并且框也将被取消分配。你真的不需要担心它。