相关疑难解决方法(0)

用swift测量经过的时间

我们如何衡量在Swift中运行函数所用的时间?我试图像这样显示经过的时间:"Elasped time is .05 seconds".看到在Java中,我们可以使用System.nanoTime(),是否有任何等效的方法可用于Swift来实现这一目的?

请看一下示例程序:

func isPrime(var number:Int) ->Bool {
    var i = 0;
    for i=2; i<number; i++ {
        if(number % i == 0 && i != 0) {
            return false;
        }
    }
    return true;
}

var number = 5915587277;

if(isPrime(number)) {
    println("Prime number");
} else {
    println("NOT a prime number");
}
Run Code Online (Sandbox Code Playgroud)

time nsdate elapsedtime swift

111
推荐指数
8
解决办法
7万
查看次数

是否有必要在Swift程序中使用autoreleasepool?

它说,在WWDC14演示文稿的第17页

使用Objective-C?还是要管理自动释放池
autoreleasepool {/*code*/}

那是什么意思?这是否意味着如果我的代码库没有任何Objective-C文件,autoreleasepool {}是不必要的?

一个相关问题的答案中,有一个例子autoreleasepool可以是有用的:

- (void)useALoadOfNumbers {
    for (int j = 0; j < 10000; ++j) {
        @autoreleasepool {
            for (int i = 0; i < 10000; ++i) {
                NSNumber *number = [NSNumber numberWithInt:(i+j)];
                NSLog(@"number = %p", number);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果上面的代码被autoreleasepool删除后转换成Swift ,那么Swift是否足够聪明,知道该number变量应该在第一个之后发布}(就像其他语言一样)?

memory-management swift

89
推荐指数
2
解决办法
3万
查看次数

在Swift的循环中减少内存使用

我在Swift中有一个while循环,试图解决问题,有点像比特币挖矿。简化版本是-

import SwiftyRSA

func solveProblem(data: String, complete: (UInt32, String) -> Void) {
    let root = data.sha256()
    let difficulty = "00001"
    let range: UInt32 = 10000000
    var hash: String = "9"
    var nonce: UInt32 = 0
    while (hash > difficulty) {
        nonce = arc4random_uniform(range)
        hash = (root + String(describing: nonce)).sha256()
    }
    complete(nonce, hash)
}

solveProblem(data: "MyData") { (nonce, hash) in
    // Problem solved!
}
Run Code Online (Sandbox Code Playgroud)

尽管此循环正在运行,但内存使用量有时会稳定达到300mb,一旦完成,它似乎就不会释放。

有人能够解释为什么会这样吗,如果这是我应该担心的事情?

swift

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

标签 统计

swift ×3

elapsedtime ×1

memory-management ×1

nsdate ×1

time ×1