小编dhi*_*nt4的帖子

编译时间难以置信地慢

我的项目包括~350个Swift文件和~40个可可pod依赖项.

整个项目迁移到之后Swift 3,构建时间变得非常缓慢,需要花费3到3分钟才能完全编译.
我注意到如果我在不更改任何文件后重建,它会在合理的时间内构建.但是,如果我添加一个新功能,则需要3分钟以上.
Cocoapods似乎没有引起问题,因为它延迟了Compiling Swift source files状态.

我跟着这个调查:

  1. 在我的目标的构建设置中添加了-Xfrontend -debug-time-function-bodies标记Other Swift Flags

  2. 建立项目

  3. 在此输入图像描述

  4. 在此输入图像描述

  5. 将其复制到终端并运行 pbpaste | egrep '\.[0-9]ms' | sort -t "." -k 1 -n | tail -100

但是,我没有看到任何令人担忧的问题.编译时间最长的文件只有250毫秒.接下来最接近的是100毫秒,即使所有350个文件都需要250毫秒进行编译,这也只有73秒,这与我看到的3分钟以上的版本相差无几.


什么可能导致这些漫长的编译时间?

在更新到Xcode 8和之前,它从未如此缓慢Swift 3.

xcode swift3

52
推荐指数
5
解决办法
2万
查看次数

在Swift中将NSData转换为Integer

在Objective-C中,代码看起来很喜欢这个并且工作得很完美,

NSInteger random = arc4random_uniform(99) + 1 
NSData *data = [NSData dataWithBytes:& random length: sizeof(random)];
int value = *(int*)([data bytes]);
Run Code Online (Sandbox Code Playgroud)

怎么能在Swift中完成?

integer nsdata swift

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

在应用内购买中显示自定义UIAlertView代替默认UIAlertViews?

应用内购买包含Apple提供的三个默认警报视图:

第一:

Confirm Your In-App Purchase

Do you want to buy one {product name} for ${productPrice}

Buttons: [Cancel] [Buy]
Run Code Online (Sandbox Code Playgroud)

第二个(如果已购买):

Youve already purchased this. Would you like to get it again for free?

Buttons: [Cancel] [OK]
Run Code Online (Sandbox Code Playgroud)

最后一个:

Thank You

Your purchase was successful.

Buttons: [OK]
Run Code Online (Sandbox Code Playgroud)

我的问题是,我可以用我自己的自定义(更好看)的警报视图替换这些视图,而不是苹果为我们提供的默认视图?如果是这样,那么我将如何检测正在显示哪个UIAlertView,并且只要消息几乎相同,就使用针对应用内购买的自定义消息,这是否违反Apple的指南?

objective-c uialertview in-app-purchase ios

5
推荐指数
0
解决办法
427
查看次数

在Swift中将整数转换为NSData

在Objective-C中,代码看起来很喜欢这个,

    NSInteger random = arc4random_uniform(99) + 1 
    NSData *data = [NSData dataWithBytes:& random length: sizeof(random)];
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在Swift中这样做时,

    let random:NSInteger = NSInteger(arc4random_uniform(99) + 1) //(1-100)
    let data = NSData(bytes: &random, length: 3)
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误,坚持"NSInteger不能转换为@lvalue in $ T1

任何帮助将不胜感激!

nsdata ios swift

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

fscanf()之后的代码不执行

我是C的新手,在这里有这个简单的代码:

int main(int argc, char **argv){

    FILE *input = stdin;

    char string[20];
    while (fscanf(input, "%s",string)) {
        printf("String: %s \n",string);
    }
    printf("Done");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是"完成"行永远不会打印出来.当while循环从stdin读完时,它不会执行任何后续操作.有一些我不知道的概念吗?提前致谢.

c scanf

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

标签 统计

ios ×2

nsdata ×2

swift ×2

c ×1

in-app-purchase ×1

integer ×1

objective-c ×1

scanf ×1

swift3 ×1

uialertview ×1

xcode ×1