草庐IT

来自调试器的 Ios Xcode 消息 : Terminated due to memory issue

coder 2023-09-27 原文

我有一个带有 Collection View 的应用程序和一个重定向到外部链接的 Collection View 中的单元格。

每当该链接打开时,应用程序在后台崩溃并在调试器上显示:

"Terminated due to memory issue".

如果我只是按下主页按钮,应用程序会继续正常运行。

if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) Portrait = NO;
else if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)) Portrait = YES;
else Portrait = [self getStatusBarOrientations];

if(indexPath.row == 4 && indexPath.section == 0)
{
    NewsListCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell4"  forIndexPath:indexPath];

    if ([languageID isEqualToString:@"1025"])
    {
        cell.title.text =[NSString stringWithFormat:@"جريدة اليوم %@", [self.pdfCoverDict valueForKey:@"PdfDate"]];
        [cell.contentView setTransform:CGAffineTransformMakeScale(-1, 1)];
    } else {
        cell.title.text =[NSString stringWithFormat:@"Today's Edition %@", [self.pdfCoverDict valueForKey:@"PdfDate"]];
    }
    NSURL *imageUrl = [NSURL URLWithString:[self.pdfCoverDict valueForKey:@"CoverImage"]];
    [cell.imageView sd_setImageWithURL:imageUrl];
    cell.imageViewWidth.constant = Portrait ? 246 : 331;
    cell.imageViewHeight.constant = Portrait ? 350 : 471;
    return cell;

} else if(indexPath.row == 0) {
    NewsListCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"HeaderView" forIndexPath:indexPath];
    cell.title.text = [self.channelKeys objectAtIndex:indexPath.section];
    cell.backView.hidden = [channelID isEqualToString:@"1"] ? (indexPath.section == 0 ? YES : NO) : YES;
    if([languageID isEqualToString:@"1025"]) {
        [cell.contentView setTransform:CGAffineTransformMakeScale(-1, 1)];
    } else {
        [cell.contentView setTransform:CGAffineTransformMakeScale(-1, 1)];
        [cell.title setTransform:CGAffineTransformMakeScale(-1, 1)];
    }
    return cell;
} else {

    NSInteger row;
    if(indexPath.row != 1 && indexPath.row != 2 && indexPath.row != 3) {
        row = indexPath.row - 2;
    } else {
        row = indexPath.row - 1;
    }
    NSMutableArray * articles =  [self.channelArticles valueForKey:[self.channelKeys objectAtIndex:indexPath.section]];
     //        if(row < articles.count) {
    NSString *articleImage = [[articles objectAtIndex:row] valueForKey:@"ArticleMedia"];
    NSString *cellIdentifier;
    NSString *articleLangID = [NSString stringWithFormat:@"%@", [[articles objectAtIndex:row] valueForKey:@"LanguageID"]];

    if(indexPath.section == 0) {
        switch (indexPath.row)
        {
            case 1:
                if(![articleImage isEqualToString:@""]) cellIdentifier = @"Cell1";
                else cellIdentifier = @"CellNoImg";
                break;
            case 2:
                if(![articleImage isEqualToString:@""]) cellIdentifier = @"Cell2";
                else cellIdentifier = @"CellNoImg";
                break;
            case 3:
                if(![articleImage isEqualToString:@""]) cellIdentifier = @"Cell3";
                else cellIdentifier = @"CellNoImg";
                break;
            case 5:
                if(![articleImage isEqualToString:@""]) cellIdentifier = @"Cell5";
                else cellIdentifier = @"CellNoImg";
                break;
            case 6:
                if(![articleImage isEqualToString:@""]) cellIdentifier = @"Cell5";
                else cellIdentifier = @"CellNoImg";
                break;
            default:
                if(![articleImage isEqualToString:@""]) {
                    if([channelID isEqualToString:@"1"]) cellIdentifier = @"Cell6";
                    else cellIdentifier = @"Cell5";
                } else {
                    cellIdentifier = @"CellNoImg";
                }
                break;
        }
    } else {
        if(![articleImage isEqualToString:@""]) cellIdentifier = @"Cell5";
        else cellIdentifier = @"CellNoImg";
    }


    NewsListCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

    if([[[articles objectAtIndex:row] valueForKey:@"LabelName"] isEqualToString:@""]) {
        cell.labelNameHeight.constant = 0;
    } else {
        cell.labelNameHeight.constant = 21;
    }
    cell.labelName.text = [[articles objectAtIndex:row] valueForKey:@"LabelName"];

    cell.title.text = [[articles objectAtIndex:row] valueForKey:@"MainHeadline"];

    if(indexPath.row == 3 && indexPath.section == 0) {
        if(![articleImage isEqualToString:@""]) cell.titleHeight.constant = [self lineCountForLabel:cell.title labelWidth:cell.frame.size.width - Portrait ? 254 : 337] * 35;
        else cell.titleHeight.constant = [self lineCountForLabel:cell.title labelWidth:cell.frame.size.width - 10] * 35;
    } else {
        cell.titleHeight.constant = [self lineCountForLabel:cell.title labelWidth:cell.frame.size.width - 10] * 35;
    }

    NSString *authorTime = [self getAuthorTime:[articles objectAtIndex:row]];
    if([authorTime isEqualToString:@""]) {
        cell.authorTimeHeight.constant = 0;
    } else {
        cell.authorTimeHeight.constant = 21;
    }
    cell.authorTime.text = authorTime;

    NSString *details = [[articles objectAtIndex:row] valueForKey:@"Introduction"];
    cell.details.attributedText = [self getAttributedString: details language: articleLangID];

    if([cellIdentifier isEqualToString:@"CellNoImg"]) {
        defaultLines = 5;
        if([cell.authorTime.text isEqualToString:@""]) defaultLines++;
        if([cell.labelName.text isEqualToString:@""]) defaultLines++;
        if(cell.titleHeight.constant / 35 == 1) defaultLines++;
        cell.details.numberOfLines = defaultLines;
    }

    if(indexPath.section == 0) {
        switch (indexPath.row)
        {
            case 2:
                cell.imageViewWidth.constant = Portrait ? 240 : 323;
                cell.imageViewHeight.constant = Portrait ? 151 : 199;
                break;
            case 3:
                cell.imageViewWidth.constant = Portrait ? 240 : 323;
                cell.imageViewHeight.constant = Portrait ? 151 : 199;
            case 5:
                cell.imageViewWidth.constant = Portrait ? 240 : 323;
                cell.imageViewHeight.constant = Portrait ? 151 : 199;
                break;
            case 6:
                cell.imageViewWidth.constant = Portrait ? 240 : 323;
                cell.imageViewHeight.constant = Portrait ? 151 : 199;
                break;
            default:
                cell.imageViewWidth.constant = Portrait ? 240 : 323;
                cell.imageViewHeight.constant = Portrait ? 151 : 199;
                break;
        }
    } else {
        cell.imageViewWidth.constant = Portrait ? 240 : 323;
        cell.imageViewHeight.constant = Portrait ? 151 : 199;
    }

    if (![articleImage isEqualToString:@""]) {
        NSURL *imageUrl = [NSURL URLWithString:articleImage];
        [cell.imageView sd_setImageWithURL:imageUrl];

    } else {
        [cell.imageView sd_setImageWithURL:nil];
    }

    if([articleLangID isEqualToString:@"1025"]) {
        [cell.contentView setTransform:CGAffineTransformMakeScale(-1, 1)];
        cell.labelName.textAlignment = NSTextAlignmentRight;
        cell.title.textAlignment = NSTextAlignmentRight;
        cell.authorTime.textAlignment = NSTextAlignmentRight;
        cell.details.textAlignment = NSTextAlignmentRight;
    } else {
        if (indexPath.row == 3) {
            [cell.contentView setTransform:CGAffineTransformMakeScale(-1, 1)];
            [cell.labelName setTransform:CGAffineTransformMakeScale(-1, 1)];
            [cell.title setTransform:CGAffineTransformMakeScale(-1, 1)];
            [cell.authorTime setTransform:CGAffineTransformMakeScale(-1, 1)];
            [cell.details setTransform:CGAffineTransformMakeScale(-1, 1)];
            [cell.imageView setTransform:CGAffineTransformMakeScale(-1, 1)];
        }
        cell.labelName.textAlignment = NSTextAlignmentLeft;
        cell.title.textAlignment = NSTextAlignmentLeft;
        cell.authorTime.textAlignment = NSTextAlignmentLeft;
        cell.details.textAlignment = NSTextAlignmentLeft;
    }
    return cell;

}

最佳答案

这是在什么设备上发生的?一旦您的应用程序处于后台,您可以预期它会随时被终止 - 它不必使用过多的内存。

如果新的前台应用程序需要更多内存,操作系统会尽可能多地给它。它会向任何后台应用程序发送内存警告。如果他们不通过减少内存占用来响应,或者前台应用程序仍然需要更多内存,那么后台应用程序将被杀死。

您的应用并没有崩溃,而是被操作系统杀死了,因为它不再是前台应用并且其他地方需要它的资源。

关于来自调试器的 Ios Xcode 消息 : Terminated due to memory issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34089385/

有关来自调试器的 Ios Xcode 消息 : Terminated due to memory issue的更多相关文章

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

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

  2. ruby-on-rails - 无法让 rspec、spork 和调试器正常运行 - 2

    GivenIamadumbprogrammerandIamusingrspecandIamusingsporkandIwanttodebug...mmm...let'ssaaay,aspecforPhone.那么,我应该把“require'ruby-debug'”行放在哪里,以便在phone_spec.rb的特定点停止处理?(我所要求的只是一个大而粗的箭头,即使是一个有挑战性的程序员也能看到:-3)我已经尝试了很多位置,除非我没有正确测试它们,否则会发生一些奇怪的事情:在spec_helper.rb中的以下位置:require'rubygems'require'spork'

  3. ruby - JetBrains RubyMine 3.2.4 调试器不工作 - 2

    使用Ruby1.9.2运行IDE提示说需要gemruby​​-debug-base19x并提供安装它。但是,在尝试安装它时会显示消息Failedtoinstallgems.Followinggemswerenotinstalled:C:/ProgramFiles(x86)/JetBrains/RubyMine3.2.4/rb/gems/ruby-debug-base19x-0.11.30.pre2.gem:Errorinstallingruby-debug-base19x-0.11.30.pre2.gem:The'linecache19'nativegemrequiresinstall

  4. ruby-on-rails - 如何调试 cucumber 测试? - 2

    我有:When/^(?:|I)follow"([^"]*)"(?:within"([^"]*)")?$/do|link,selector|with_scope(selector)doclick_link(link)endend我打电话的地方:Background:GivenIamanexistingadminuserWhenIfollow"CLIENTS"我的HTML是这样的:CLIENTS我一直收到这个错误:.F-.F--U-----U(::)failedsteps(::)nolinkwithtitle,idortext'CLIENTS'found(Capybara::Element

  5. ruby - 使用 Ruby 通过 Outlook 发送消息的最简单方法是什么? - 2

    我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=

  6. Ruby - 如何将消息长度表示为 2 个二进制字节 - 2

    我正在使用Ruby,我正在与一个网络端点通信,该端点在发送消息本身之前需要格式化“header”。header中的第一个字段必须是消息长度,它被定义为网络字节顺序中的2二进制字节消息长度。比如我的消息长度是1024。如何将1024表示为二进制双字节? 最佳答案 Ruby(以及Perl和Python等)中字节整理的标准工具是pack和unpack。ruby的packisinArray.您的长度应该是两个字节长,并且按网络字节顺序排列,这听起来像是n格式说明符的工作:n|Integer|16-bitunsigned,network(bi

  7. ruby-on-rails - 在 Flash 警报 Rails 3 中显示错误消息 - 2

    如果我在模型中设置验证消息validates:name,:presence=>{:message=>'Thenamecantbeblank.'}我如何让该消息显示在闪光警报中,这是我迄今为止尝试过的方法defcreate@message=Message.new(params[:message])if@message.valid?ContactMailer.send_mail(@message).deliverredirect_to(root_path,:notice=>"Thanksforyourmessage,Iwillbeintouchsoon")elseflash[:error]

  8. ruby-on-rails - 在 RSpec 中,如何以任意顺序期望具有不同参数的多条消息? - 2

    RSpec似乎按顺序匹配方法接收的消息。我不确定如何使以下代码工作:allow(a).toreceive(:f)expect(a).toreceive(:f).with(2)a.f(1)a.f(2)a.f(3)我问的原因是a.f的一些调用是由我的代码的上层控制的,所以我不能对这些方法调用添加期望。 最佳答案 RSpecspy是测试这种情况的一种方式。要监视一个方法,用allowstub,除了方法名称之外没有任何约束,调用该方法,然后expect确切的方法调用。例如:allow(a).toreceive(:f)a.f(2)a.f(1)

  9. ruby - Ruby 是否有类似于 Perl 的 "perl -d"的逐步调试器? - 2

    Ruby是否有逐步调试器,类似于Perl的“perl-d”? 最佳答案 ruby-debug(对于ruby1.8),debugger(对于ruby1.9),byebug(对于ruby​​2.0)以及trepanning系列都有一个-x或--trace选项。在调试器内部,命令setlinetrace将打开或关闭线路跟踪。这是themanualforruby-debug原来的答案已经修改,因为数据噪声文章的链接,唉,不再有效了。还添加了ruby​​-debug的后继者 关于ruby-Ruby

  10. ruby - 可以正常中断的来自 Rake 的长时间运行的 shell 命令? - 2

    在几个项目中,我希望有一个类似rakeserver的rake任务,它将通过任何需要的方式开始为该应用程序提供服务。这是一个示例:task:serverdo%x{bundleexecrackup-p1234}end这行得通,但是当我准备停止它时,按Ctrl+c并没有正常关闭;它中断了Rake任务本身,它说rakeaborted!并给出堆栈跟踪。在某些情况下,我必须执行Ctrl+c两次。我可能可以用Signal.trap写一些东西来更优雅地中断它。有没有更简单的方法? 最佳答案 trap('SIGINT'){puts"Yourmessa

随机推荐