我的应用必须使用int
做一些倍数,很容易遇到两个相当大的数字'乘法。
当然会崩溃。我怎么能说一些bool值。就像我们退出应用之前的每次一样,我们saveData
的{{1}}功能AppDelegate.swift
:
func applicationWillTerminate(application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
答案 0 :(得分:2)
如果是整数算术运算的结果(+, - ,*,/,...)
溢出,应用程序立即终止。 没办法
抓住这种情况或获得通知,例如保存数据。
没有Swift错误或者NSException
抛出你可以捕获的错误。
对于访问等其他运行时错误也会发生同样的情况
有效边界之外的数组元素,或解包
可选的nil
。
这意味着您必须事先检查是否为整数运算
可以执行操作。或者 - 根据您的需要 -
您可以使用“溢出运算符”&+
,&-
和&*
代替,
哪个截断结果而不是触发错误,
类似于(目标 - )C。
答案 1 :(得分:0)
您应该更喜欢NSInteger
而不是Int
。
当您不知道代码可能运行在哪种处理器体系结构时使用NSInteger
,因此您可能出于某种原因需要尽可能大的int类型,32
位系统上只有一个int,而在64
位系统上,它是long
。
坚持使用NSInteger
而不是int / long,除非你特别需要它们。
NSInteger/NSUInteger
被定义为其中一种类型的*dynamic typedef *s
,它们的定义如下:
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif