我的项目包括~350个Swift文件和~40个可可pod依赖项.
整个项目迁移到之后Swift 3
,构建时间变得非常缓慢,需要花费3到3分钟才能完全编译.
我注意到如果我在不更改任何文件后重建,它会在合理的时间内构建.但是,如果我添加一个新功能,则需要3分钟以上.
Cocoapods似乎没有引起问题,因为它延迟了Compiling Swift source files
状态.
我跟着这个调查:
在我的目标的构建设置中添加了-Xfrontend -debug-time-function-bodies
标记Other Swift Flags
建立项目
将其复制到终端并运行 pbpaste | egrep '\.[0-9]ms' | sort -t "." -k 1 -n | tail -100
但是,我没有看到任何令人担忧的问题.编译时间最长的文件只有250毫秒.接下来最接近的是100毫秒,即使所有350个文件都需要250毫秒进行编译,这也只有73秒,这与我看到的3分钟以上的版本相差无几.
在更新到Xcode 8
和之前,它从未如此缓慢Swift 3
.
在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中完成?
应用内购买包含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中,代码看起来很喜欢这个,
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
任何帮助将不胜感激!
我是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读完时,它不会执行任何后续操作.有一些我不知道的概念吗?提前致谢.
ios ×2
nsdata ×2
swift ×2
c ×1
integer ×1
objective-c ×1
scanf ×1
swift3 ×1
uialertview ×1
xcode ×1