小编Mik*_*ane的帖子

Swift:当我转向另一个视图控制器时,内存未清除,收到内存警告

我正在为iOS 8.1在Xcode 6.2中构建一个应用程序.我有一个UIViewController(LevelViewController),其中包含一个UICollectionView单元,每个单元代表我游戏中的一个级别(每个单元都有一个带有数字的标签).一旦选中了一个单元格,我就会执行一个show segue来SKScene加载该特定级别的所有数据.我还有一个"菜单"按钮,它执行show segue返回主菜单.

在功能上这一切都有效,但是在执行两个segues之后我遇到了严重的记忆问题.在仪器偷看之后,似乎当我Segue公司出的LevelViewController,所有的UILabel,我增加了对每个单独UICollectionViewCell保留在内存中,与一切其他一起包含在细胞中.应该只有192个标签(对于192个级别)但是在执行这个segue几次后,它们在乐器中总计大约1000个.

显然这些并没有被记忆释放,我的理解是swift应该照顾它,所以我不确定问题是什么.我还应该注意,这UICollectionView是以编程方式添加的,并且没有IBOutlets使用.

那么,UICollectionView当我离开那些标签时,我究竟能如何摆脱这些标签呢LevelViewController?我对此非常困惑,这毁了我的圣帕特里克节.因此,爱尔兰所有爱的事情请帮助一个小伙子:)

注意:我尝试过的方法

self.collectionView.removeFromSuperView()
self.collectionView = nil
self.collectionView.deleteItemsAtIndexPaths(path)
Run Code Online (Sandbox Code Playgroud)

memory ios uicollectionview swift xcode6

3
推荐指数
1
解决办法
3890
查看次数

Dart孤立的暂停功能未按预期工作

我一直在玩Dart孤立,并且在使用该isolate.pause();功能时遇到问题。

import 'dart:io';
import 'dart:isolate';

main(){
  ReceivePort receivePort = new ReceivePort();
  Isolate.spawn(isolateEntryPoint, receivePort.sendPort).then((isolate){
    isolate.pause(isolate.pauseCapability);
  });
}

void isolateEntryPoint(SendPort sendPort){
  while(true){
    print("isolate is running");
    sleep(new Duration(seconds: 2));
  }
}
Run Code Online (Sandbox Code Playgroud)

在我的示例中,隔离区基本上只是每2秒打印出一些内容。

从我阅读的文档中,我的理解是上面的代码应该:

  1. 产生隔离
  2. 立即暂停隔离

但是它不起作用,隔离程序仍在运行,即使我告诉它暂停,它也会每2秒打印一次“隔离程序正在运行”。

我知道您可以通过传递可选参数 来在暂停状态下启动隔离。但最终,我希望能够在任何时候都暂停隔离,而不仅仅是立即行动。paused: trueIsolate.spawn(isolateEntryPoint, receivePort, paused: true)...

我可以找到的关于此功能的唯一文档在官方的dart文档中,因此我可能使用了该isolate.pause()函数不正确。但是,无论哪种方式,演示此功能正确用法的代码示例都将不胜感激。

concurrency dart dart-isolates

3
推荐指数
1
解决办法
146
查看次数