【问题标题】:IOS programming: Passing large arrays over segues, good or bad idea?IOS 编程:通过 segues 传递大型数组,好主意还是坏主意?
【发布时间】:2013-07-16 08:06:59
【问题描述】:

我对 IOS 开发比较陌生,在我的整个应用程序中,我一直在我的视图控制器 segues 之间传递大量信息。我目前正在从云数据库中获取这些数据,我担心随着时间的推移,我将通过我的 segues 传递的数据会随着云数据的增加而增加。通过这些 segue 传递大量数据是不是一个坏主意,如果我最终通过这些 segue(1,000 到 2,000 个元素)传递相对较大的数组,它将如何影响我的应用程序的性能?如果这是一个坏主意,我还能做什么?建议,提示,指针都会很棒。谢谢你

【问题讨论】:

    标签: ios objective-c cocoa-touch segue


    【解决方案1】:

    只要您只是将指针传递给 strong/retaining 属性,这不会对性能产生负面影响 - 只需设置一个指针,对象的外观就无关紧要。

    假设这段代码:

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    {
        if ([segue.identifier isEqualToString:@"otherSegue"]) {
            OtherViewController *destViewController = segue.destinationViewController;
            destViewController.dataArray = self.downloadedArray;
        }
    }
    

    只要 otherViewController 上的属性 dataArray 是强或保留 (@property (strong) NSArray *dataArray;),该代码的执行时间不应随着数组的大小而增加,因为只是传递了一个指针。

    【讨论】:

    • 非常感谢,这很有帮助!
    • 这已被讨论了数千次。请搜索它。 (如果回答了您的问题,请接受我的回答)
    【解决方案2】:

    我并没有真正使用故事板,但quick look on google 指出了一些东西:

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        if ([segue.identifier isEqualToString:@"showRecipeDetail"]) {
            NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
            RecipeDetailViewController *destViewController = segue.destinationViewController;
            destViewController.recipeName = [recipes objectAtIndex:indexPath.row];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 2010-11-23
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 2019-11-11
      • 2010-11-27
      相关资源
      最近更新 更多