草庐IT

ios - Xcode 4 和 "SIGABRT"错误? (虽然只适用于 iPhone)

coder 2024-01-12 原文

我是 ios 开发和 stackoverflow 的新手。在发布之前,我确实尝试过搜索 stackoverflow 和 google。

我构建了一个简单的小应用程序,最初只是让它成为一个仅限 iphone 的应用程序,但最终决定让它通用。当我开始了解 xcode 4 并将其切换到通用然后再返回时,我愚蠢地四处乱逛,所以我不得不重新复制项目并再次执行。这次我从一个通用应用程序开始。 (不是在我创建它时,而是在我去项目并在那里选择它之后)它创建了 ipad 文件夹和 mainwindow-ipad.xib 文件,但当然是空的,因为我还没有做任何事情。我将它设置为基于选项卡的应用程序,因此我的 iphone 版本也有 firstview 和 secondview nib 文件,但 ipad 版本没有。我首先在 iphone 版本中进行了所有设置,并且运行良好。然后我去放下 ipad 版本(我确实从 mainwindow-ipad 中删除了第二个选项卡,因为我不需要它)

然后我创建了一个新的 nib 文件,并将其与“main-ipad.h”和“main-ipad.m”一起放在 ipad 文件夹中。我复制了我的代码并连接了所有东西,它在 ipad 模拟器上运行良好,但现在当我尝试运行 iphone 模拟器时,我得到“SIGABRT 错误。我拍了它的屏幕截图。我不完全理解 objective-c,所以我希望有人可以帮助我吗?我可以发布任何代码或任何你可能需要帮助我解决这个错误的东西,所以尽管问。

感谢您提供的任何帮助和建议!

谢谢!

[好吧,我本来可以发布图片,但我不能,因为我是新用户,而是我发布了突出显示的行和 xcode 的输出]

错误文件代码:

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil); //ERROR IS ON THIS LINE <-----
    [pool release];
    return retVal;
}

[输出]

2011-06-18 17:32:43.980 Price Assist[445:207] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x4e09cc0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key finallabel.'
*** Call stack at first throw:
(
0   CoreFoundation                      0x00dc35a9 __exceptionPreprocess + 185
1   libobjc.A.dylib                     0x00f17313 objc_exception_throw + 44
2   CoreFoundation                      0x00dc34e1 -[NSException raise] + 17
3   Foundation                          0x00795677 _NSSetUsingKeyValueSetter + 135
4   Foundation                          0x007955e5 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 285
5   UIKit                               0x0021130c -[UIRuntimeOutletConnection connect] + 112
6   CoreFoundation                      0x00d398cf -[NSArray makeObjectsPerformSelector:] + 239
7   UIKit                               0x0020fd23 -[UINib instantiateWithOwner:options:] + 1041
8   UIKit                               0x00211ab7 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168
9   UIKit                               0x000c7628 -[UIViewController _loadViewFromNibNamed:bundle:] + 70
10  UIKit                               0x000c5134 -[UIViewController loadView] + 120
11  UIKit                               0x000c500e -[UIViewController view] + 56
12  UIKit                               0x00038d42 -[UIWindow addRootViewControllerViewIfPossible] + 51
13  Foundation                          0x007955e5 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 285
14  UIKit                               0x00048ff6 -[UIView(CALayerDelegate) setValue:forKey:] + 173
15  UIKit                               0x0021130c -[UIRuntimeOutletConnection connect] + 112
16  CoreFoundation                      0x00d398cf -[NSArray makeObjectsPerformSelector:] + 239
17  UIKit                               0x0020fd23 -[UINib instantiateWithOwner:options:] + 1041
18  UIKit                               0x00211ab7 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168
19  UIKit                               0x0001717a -[UIApplication _loadMainNibFile] + 172
20  UIKit                               0x00017cf4 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 291
21  UIKit                               0x00022617 -[UIApplication handleEvent:withNewEvent:] + 1533
22  UIKit                               0x0001aabf -[UIApplication sendEvent:] + 71
23  UIKit                               0x0001ff2e _UIApplicationHandleEvent + 7576
24  GraphicsServices                    0x00ffc992 PurpleEventCallback + 1550
25  CoreFoundation                      0x00da4944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
26  CoreFoundation                      0x00d04cf7 __CFRunLoopDoSource1 + 215
27  CoreFoundation                      0x00d01f83 __CFRunLoopRun + 979
28  CoreFoundation                      0x00d01840 CFRunLoopRunSpecific + 208
29  CoreFoundation                      0x00d01761 CFRunLoopRunInMode + 97
30  UIKit                               0x000177d2 -[UIApplication _run] + 623
31  UIKit                               0x00023c93 UIApplicationMain + 1160
32  Price Assist                        0x000029a9 main + 121
33  Price Assist                        0x00002925 start + 53
)
terminate called after throwing an instance of 'NSException'

iPhone FirstView nib 文件.h 代码:

@interface FirstViewController : UIViewController {
    IBOutlet UITextField *dollarinput;
    IBOutlet UITextField *centsinput;
    IBOutlet UIButton *combinevalue;
    IBOutlet UITextField *percentoffinput;
    IBOutlet UILabel *discountlabel;
    IBOutlet UILabel *finallabel;
}  
- (IBAction)calculate:(id)sender;
- (IBAction)backgroundTouched:(id)sender;
- (IBAction)autonext:(id)sender;

iPhone FirstView nib 文件.m 代码:​​

//
//  FirstViewController.m
//  Price Assist
//
//  Created by Dustin Schreiber on 6/15/11.
//  Copyright 2011 TheTechSphere.com. All rights reserved.
//

#import "FirstViewController.h"


@implementation FirstViewController

/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];
}
*/

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}


- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc. that aren't in use.
}


- (void)viewDidUnload
{    
[percentoffinput release];
percentoffinput = nil;
[discountlabel release];
discountlabel = nil;
[finallabel release];
finallabel = nil;
[super viewDidUnload];

// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}


- (void)dealloc
{
[percentoffinput release];
[discountlabel release];
[finallabel release];
[super dealloc];
}


- (IBAction)calculate:(id)sender {
if ([centsinput.text length] == 0){
    centsinput.text = @"00";
}
if ([dollarinput.text length] == 0){
    dollarinput.text = @"00";
}
if ([percentoffinput.text length] == 0){
    percentoffinput.text = @"00";
}
double cDollars = [dollarinput.text doubleValue];
double cCents = [centsinput.text doubleValue];
double percentoff = [percentoffinput.text doubleValue] / 100;
NSString *ccDollars = [[NSNumber numberWithFloat:cDollars] stringValue];
NSString *ccCents = [[NSNumber numberWithFloat:cCents] stringValue];
NSString *placeholder = [NSString stringWithFormat:@"%@.%@", ccDollars, ccCents];
double combined = [placeholder doubleValue];
double discount = combined * percentoff;
NSString *discountholder2 =[NSString stringWithFormat:@"%.2f", discount];
discountlabel.text = discountholder2;
double newprice = (combined - discount);
NSString *str = [NSString stringWithFormat:@"%.2f", newprice];
finallabel.text = str;
dollarinput.text = ccDollars;
centsinput.text = ccCents;
percentoffinput.text = [[NSNumber numberWithFloat:percentoff] stringValue];
}

-(IBAction)backgroundTouched:(id)sender
{
[dollarinput resignFirstResponder];
[centsinput resignFirstResponder];
[percentoffinput resignFirstResponder];
}

- (IBAction)autonext:(id)sender {
if ([centsinput.text length ] >= 2) {
    if ([centsinput.text length] > 2) {
        centsinput.text = @"";
    } else {
        //next field
    }
}
}

@end

再次感谢!如果有人对我的代码有任何建议,我很乐意在这里提出!就像我说的,我是新手,这是我知道的唯一方法。

------------> 如果有人需要,我会上传整个项目文件夹。只是问。谢谢大家的帮助。我是 xcode 的新手,所以我还没有完全理解。

Project Zipped

最佳答案

在您使用 finallabel 的地方发布一些代码并尝试调试您的应用程序,这样您就可以在应用程序崩溃之前告诉我该行。

选项 2: 尝试在 malloc_error_break 中设置断点,以便我们可以获得有关错误的更多信息。

在 XCode 中转到运行 -> 显示 -> 断点(或只需 cmd + 选项 + B)。然后双击添加一个新的符号(符号断点)并输入malloc_error_break然后回车。

现在运行您的应用并粘贴您的控制台文本。

更新 如果您需要帮助 http://developer.apple.com/library/mac/#recipes/xcode_help-breakpoint_navigator/articles/adding_a_symbolic_breakpoint.html


检查您在 InterfaceBuilder 中的连接,您的 fianllabel 可能有问题。 还要在 InterfaseBuilder 的 iphone XIB 中检查您的自定义类 -> 类


更新

转到产品 -> 清洁。然后运行。

关于ios - Xcode 4 和 "SIGABRT"错误? (虽然只适用于 iPhone),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398649/

有关ios - Xcode 4 和 "SIGABRT"错误? (虽然只适用于 iPhone)的更多相关文章

  1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  2. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  3. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  4. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  5. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  6. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  7. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  8. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  9. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  10. ruby-on-rails - 错误 : Error installing pg: ERROR: Failed to build gem native extension - 2

    我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby​​'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe

随机推荐