在我的应用程序中是一个非常非常繁琐的错误! 几乎每次我构建我的应用程序时,我都会得到一个“EXC_BAD_ACCESS”错误! 没关系,可能会出现错误,但如果我再次尝试构建应用程序,则会出现错误,但会出现另一行代码!!
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UIStoryboard *mainStoryboard = nil;
if ([[UIScreen mainScreen] bounds].size.height <= 480) {
mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
} else {
mainStoryboard = [UIStoryboard storyboardWithName:@"Main4er" bundle:nil];
}
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:[mainStoryboard instantiateInitialViewController]];
[self.window makeKeyAndVisible]; // HERE THE ERROR COMES SOMETIMES
return YES; }
我不知道我的错在哪里!我不支持发布,保留 - 当我开始开发应用程序时,我将其关闭了!
有时错误出现在这样的行:
UILabel * labelNiederlage = [[UILabel alloc] initWithFrame:CGRectMake(243, -2, 40, 26)];
有人能帮助我吗?
答案 0 :(得分:0)
就像一个想法,如果你使用故事板,你可以安全地删除这些行
UIStoryboard *mainStoryboard = nil;
if ([[UIScreen mainScreen] bounds].size.height <= 480) {
mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
} else {
mainStoryboard = [UIStoryboard storyboardWithName:@"Main4er" bundle:nil];
}
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:[mainStoryboard instantiateInitialViewController]];
为不同的屏幕高度制作两个故事板也是一个坏主意,因为你可以在单个故事板中制作动态高度的元素
可能您的应用失败了,因为您没有使用属性,mainStoryboad
必须是(strong, nonatomic)
,并且您必须强烈引用指针(当您使用属性时会自动维护,即{{ 1}};
答案 1 :(得分:0)
从几行代码中分辨出来并不容易。正如Dig所说,你的故事板可能无法保留。不过,我建议采用以下方法:
1)确保你的某个地方没有可能是问题根源的悬挂指针。
- &GT;看看你对故事板(以及其他人)的处理方式!你是否以某种方式保留它?按照惯例,storyboardWithName返回一个自动释放的对象。如果你没有做任何事情,你可能需要自己保留它。其他人也一样。
- &GT;使用僵尸模式运行乐器,你可能会发现一些有趣的东西。我建议启用此功能并保留计数
2)如果你不能用它来发现它,在一个几乎空的故事板的新项目中构建一个简单的测试用例。这可能有助于解决这里的问题。
3)将您的代码与工作示例进行比较。有很多它们。只需得到一个并发现差异。
希望这有帮助。
答案 2 :(得分:0)
每当遇到此类错误时,您都可以使用 Zombie Objects 来暗示出现了什么问题。
转到“YourProjectName”(停止btn旁边) - &gt;编辑Scheme-&gt;启用Guard Malloc 和启用Zombi对象。然后设置制动点,看看发生了什么。
虽然这是非常昂贵的操作,所以你可能想在解决问题时将其关闭。
此致
赫里斯托斯