我有一个UIViewController子类,曾经有一个关联的nib文件。我已经删除了nib文件并更改了它的加载方式:
FakeNameViewController *vc = [[FakeNameViewController alloc] init];
而不是:
FakeNameViewController *vc = [[FakeNameViewController alloc] initWithNibName:@"FakeNameViewController" bundle:nil];
当视图控制器加载时崩溃:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason:
'[<FakeNameViewController 0x58b4510> setValue:forUndefinedKey:]:
this class is not key value coding-compliant for the key successView'
看起来该应用仍在尝试使用nib文件,因为“successView”是IBOutlet的原始名称。清洁无法解决问题。似乎只有在我运行之前删除应用程序时才会修复它。
这让我担心。我怀疑当人们通过AppStore更新时,它会导致应用程序崩溃。有没有一种安全的方法从项目中删除nib文件?
答案 0 :(得分:6)
当您通过Xcode安装应用程序时,它不会删除最初存在的文件,因此仍会检测并加载原始笔尖。您可以通过清除和删除设备中的应用来解决此问题。我不相信捆绑包中的旧文件可以保留App Store升级。
答案 1 :(得分:0)
我认为你在新代码的开头错过了一个'''。
FakeNameViewController * vc = [[FakeNameViewController alloc] init]; initWithNibName:@“FakeNameViewController”bundle:nil];
答案 2 :(得分:0)
init
与initWithNibNamed:bundle:
执行相同的操作。如果你使用另一个init方法,那么nib是否仍然存在并不重要。