小编Sta*_*huk的帖子

Xcode 9中的文件夹图标上的黑色三角形是什么意思?

我使用Xcode 9.0.我的Xcode项目中的一些文件夹图标在左下角有黑色三角形 - 例如,"0.Login","Frameworks","Products","Pods".这是什么意思?

与黑暗的三角的图象在文件夹象

xcode xcode9

36
推荐指数
2
解决办法
3011
查看次数

在尝试将数组追加到Swift中的其他数组时获取"无关的参数标签"

我越来越extraneous argument label 'contentsOf:' in call array.append(contentsOf: test)想在操场上运行该代码时出错:

import Cocoa

var array:[Any] = []
let test = [""]
array.append(contentsOf: [""])
array.append(contentsOf: test)
Run Code Online (Sandbox Code Playgroud)

为什么会这样?据我所知,有两个相等的数组,空字符串.

arrays compiler-errors append swift

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

是否可以通过基准比较ARM和x86的性能?

从最新消息来看,新的苹果处理器A11 Bionic在Geekbench基准测试中比移动英特尔酷睿i7得分更高。

据我了解,该基准测试中有很多不同的测试。这些测试模拟了不同的负载,包括日常使用中可能发生的负载。

有人指出,这些结果无法与x86结果进行比较。他们说x86能够执行“更复杂的任务”。例如,他们领导Photoshop,视频转换,科学计算。我同意ARM的软件通常只是台式机软件的“轻量级”版本。但是在我看来,这种限制是由移动操作系统的格式(移动中完成工作,没有鼠标等)引起的,而不是由ARM的性能引起的。

作为相反的示例,让我们看一下Safari。浏览器是一个复杂的程序。Safari在iPad上的工作原理与Mac一样。此外,如果我们采用Sunspider(JS基准测试)的结果,事实证明iPad上的Safari得分更高。

我认为在日常任务(Web,Office,音乐/电影)中,ARM(A10X,A11)和x86(双核移动英特尔i7)的性能是可比的和相等的。

ARM真的有远远落后于x86的任何类型的任务吗?如果是这样,原因是什么?是什么阻止了Apple在ARM上发布笔记本电脑?从POWER迁移到x86,他们已经做了同样的事情。这是技术限制,还是营销?

cpu benchmarking cpu-architecture

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

使用 NSExpression 时捕获 NSInvalidArgumentException 的正确方法

我想验证用户创建的表达式(如“2+2”、“5+7”或更复杂的)。我使用 NSExpression 类来解析和计算这个表达式。这是我的游乐场代码:

import UIKit

let string = "2+2"

var ex:NSExpression?
do {
    ex = NSExpression(format: string)
}
catch {
    print("String is not valid expression")
}

if let result = ex?.expressionValue(with: nil, context: nil) as! NSNumber? {
    print("result is \(result)")
}
Run Code Online (Sandbox Code Playgroud)

当我使用有效表达式(“2+2”)时 - 我得到了结果。但有时用户可能会提供错误的字符串(例如“2+”)。有了这个字符串,我的应用程序崩溃了:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "2+ == 1"'
Run Code Online (Sandbox Code Playgroud)

我不明白我如何捕捉这个异常以及为什么上面的代码不这样做。现在我使用 Objective C 类(具有相同的逻辑),从我的 swift 代码中调用这个方法,在那个类中我真的可以捕获这样的异常:

+(NSNumber *)solveExpression:(NSString *)string
{
    id value;
    @try {
        NSExpression *ex = [NSExpression …
Run Code Online (Sandbox Code Playgroud)

exception-handling nsexpression swift objective-c-swift-bridge

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

1作为函数声明中的参数类型

如果你需要在Python中指定参数类型,在我的例子中,你需要写这样的东西:

def my_function(param: list):
    pass
Run Code Online (Sandbox Code Playgroud)

在Swift中,您可以指定参数类型,如下所示:

func myFunction(param: [Any]) {
//
}
Run Code Online (Sandbox Code Playgroud)

有一天,我犯了Swift风格的错误并写道:

def my_function_2(param: []):
    pass
Run Code Online (Sandbox Code Playgroud)

现在我注意到它并尝试更奇怪的事情:

def my_function_3(param: 1):
    pass
Run Code Online (Sandbox Code Playgroud)

所有这些函数都是有效的,可以在Python 3.6中调用.具有预期参数类型1的函数...为什么会发生这种情况,为什么我没有看到任何警告以及我必须传递给函数2和3以满足错误请求的参数类型I的变量类型?

python parameters types function python-3.x

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

编译后的独立 Cython 可执行文件是否仍包含所有原始源代码?

我正在试验 Cython 和代码混淆的可能性(文章)。在那篇文章中特别指出:

编译完成后,无法将编译后的库逆向为可读的 Python 源代码!

我使用这个问题信息在独立的可执行文件中编译我的代码。根据我的理解,如文章1 所述,Cython 将 Python 代码转换为 C 代码,并相应调用 Python 库(这是正确的吗?)。在其他地方,我们只有 C 文件作为输出,并且不能像 .pyc 文件那样反编译回来。

我的测试代码非常简单:

def my_crashing_function():
    x = "1"
    y = 2
    test = x + y  # we will crash here

if __name__ == "__main__":
    my_crashing_function()
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个可执行文件(在cython --embed -o test.c main.py和之后gcc -Os -I /usr/include/python3.5m -o test test.c -lpython3.5m -lpthread -lm -lutil -ldl -s)我得到这样的错误:

user@debian:~# ./hello 
Traceback (most recent call last):
  File "main.py", line …
Run Code Online (Sandbox Code Playgroud)

python compilation cython

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