当 Swift 编译器在编译代码的时候会忽略掉你的注释。...可选项意味着:这里有一个值,它等于X或者这里根本没有值 首先明确的一个概念 1.Objective-C中的nil:表示缺少一个合法的对象,是指向不存在对象的指针,对结构体、枚举等类型不起作用(会返回NSNotFound...之间没有空格 强制解析 当你确定自定义的可选类型一定有值时,可以使用操作符(!)进行强制解析,拿到数据,叹号表示”我知道一定有值,请使用它”,但是当你判断错误,可选值为nil时使用(!)...进行强制解析 }else{ print("字符串为nil") } 可选项绑定 使用可选绑定,摆脱了频繁的判断是否为nil在赋值,但是使用可选绑定(optional binding)来判断可选类型是否包含值...nil") } 隐式展开可选项 在最初的声明时使用?
当然你单纯凭借 Win32 和 DirectX 去开发 GUI 应用也没有人拦你,只不过如果你试图只用 Win32 和 DirectX 而不进行各种 UI 组件封装的话,最终会非常痛苦的。...DPI 设置 如果用户在设置中更改了系统 DPI 值或屏幕 DPI 值,那么 Windows 系统会提示需要注销才会应用修改。...对于 Windows 8.1 以下的系统,注销是必要的。因为系统 DPI 值如果不注销就不会改变,应用需要在系统重新登录后有了新的 DPI 值时才会正常根据新的系统 DPI 值进行渲染。...额外的,对于 Windows 8.1 及以上的系统,系统 DPI 值等于主屏在系统启动时的屏幕 DPI 值。...,如果你做到了 System Aware 的要求位图是不会模糊的(Vista 引入 DWM 虚拟化强制拉伸,主要是当时的引用没有做相关支持,在高 DPI 情况下会控件会变得非常小且布局大概率会乱掉)。
有关if语句的更多信息,请参阅控制流。 注意 尝试使用!访问不存在的可选值会触发运行时错误。在使用之前,请务必确保可选选项包含非nil值!强行打开它的价值。...如果隐式解包的可选选项为nil,并且您尝试访问其包装值,您将触发运行时错误。结果与您在不包含值的正常可选选项后放置感叹号完全相同。...注意 当变量以后可能变成nil,不要使用隐式未包装的可选选项。如果您需要在变量生命周期内检查nil值,请始终使用正常的可选类型。...与可选选项不同,后者可以使用值的存在或不存在来传达函数的成功或失败,与之相反,错误处理允许您确定失败的根本原因,并在必要时将错误传播到程序的另一部分。 当函数遇到错误条件时,它会抛出错误。...当您调用可以抛出错误的函数时,您将try关键字之前置于表达式。 Swift会自动将错误传播到当前范围之外,直到它们由catch子句处理。
1、NSDecimalNumber转基础数据类型时选择 double 比 float 更精确 2、一个奇怪的 Duplicate interface definition for class 错误 完成以下措施后依然无效...3、使用第三方SDK的一次报错:not found for architecture arm64 解决方案: 1、CAudioEngine 报错是因为 Compile Sources 中导入了一个工程中没有对应静态库支持支持的...利用监听键盘升降的通知来实现输入支付密码的自定义试图时,总是获取不到升起来的通知 总是无法出发键盘升起来的通知,是因为模拟器的情况下,有一种情况是默认键盘不弹出来的,这个Bug很隐秘,需要使用 comand...keyWindow的根视图时又返回到原视图中 在一个老代码中使用了UIAlertView并且在UIAlertView的代理方法中重置keyWindow的根视图时又返回到原视图中 UIAlertView...shareTool]setUserDefaults:@"YES" :@"EXIT" ]; } } } 使用 UIAlertController 后就不会出现这样的问题了
用户登录注销 登录时少用root账号登录,以避免操作失误的损失 平时可登录普通账户,再用“su - 用户名”切换成管理员登录 logout logout:注销用户 在图形运行级别无效,在运行级别3有效...more:是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。...tail:输出文件中尾部的内容。 -n 5:看后面5行内容。 -f:时事追踪该文档的所有更新 >指令:输出重定向。如果不存在会创建文件,否则会将原来的文件内容覆盖。 >>指令:追加。...如果不存在会创建文件,否则不会覆盖原来的文件内容,而是追加到文件的尾部。 echo:输出内容到控制台。...zip/unzip:压缩文件/解压 zip [选项] (压缩后文件xxx.zip) (将要压缩的文件) unzip [选项] (要解压的文件xxx.zip) zip -r:递归压缩,即压缩目录 unzip
推入时,新的视图控制器从右方滑入屏幕(假定animated:YES)。向左指的Back后退按钮出现,可返回到上一步,且Back按钮用的是上一个视图控制器的标题。 2....或其他任何类型的视图控制器),并通过设置栏的viewControllers属性将其添加到选项卡栏,使每个选项卡对应一个试图控制器。...• –viewDidLoad:当加载控制器的视图到内存时,该方法被调用。...控制器加载视图过程 当调用视图控制器的view属性时,视图控制器会先调用loadView方法加载视图,因此,可以在loadView方法中创建所有的视图,这是比较好的编程惯例。...事件处理 如图所示,一般情况下,当一个视图不响应用户事件时,它会将事件传递给它的父视图。但是,当视图被视图控制器管理时,它会将事件首先传递给视图控制器。
当exclude不为nil时,如果h的键值对的键在exclude中存在且其对应值为真,该键值对就不会被写入w。...// // 在服务端,Body字段总是非nil的;但在没有主体时,读取Body会立刻返回EOF。...当发送或接受请求时,会自动添加或移除"chunked"传输编码。...请求的主体,如果非nil,会在执行后被c.Transport关闭,即使出现错误。 一般应使用Get、Post或PostForm方法代替Do方法。...如果代理环境不合法将返回错误;如果环境未设定代理或者给定的request不应使用代理时,将返回(nil, nil);如果req.URL.Host字段是"localhost"(可以有端口号,也可以没有),
可选链 可选链是一个调用和查询可选属性、方法和下标的过程,它可能为 nil 。如果可选项包含值,属性、方法或者下标的调用成功;如果可选项是 nil ,属性、方法或者下标的调用会返回 nil 。...)来明确可选链。这和在可选值后放叹号( ! )来强制展开它的值非常类似。主要的区别在于可选链会在可选项为 nil 时得体地失败,而强制展开则在可选项为 nil 时触发运行时错误。...你可以使用这个可选项返回值来检查可选链调用是成功(返回的可选项包含值),还是由于链中出现了 nil 而导致没有成功(返回的可选值是 nil )。...类型的可选 residence 属性。 如果你创建一个新的 Person 实例,得益于可选项的特性,它的 residence 属性会默认初始化为 nil 。...residence 后放一个叹号来强制展开它的值,你会触发一个运行时错误,因为 residence 根本没有值可以展开: let roomCount = john.residence!.
-webkit-appearance:none; 禁用长按页面时的弹出菜单 通常当你在手机上长按图像 img ,会弹出选项 存储图像 或者 拷贝图像,若不想让用户这么操作,可以设置方法来禁止: img...和 Chrome 内核 添加到主屏幕时隐藏地址栏和状态栏(即全屏) 当我们将一个网页添加到主屏幕时,会更希望它能有像 App 一样的表现,没有地址栏和状态栏全屏显示,代码如下: 该方案在 iOS...添加到主屏幕时设置系统顶栏颜色 当我们将一个网页添加到主屏幕时,还可以对系统显示手机信号、时间、电池的顶部状态栏 颜色进行设置,前提是开启了: 有了这个前提,你可以通过下面的方式来进行定义: content...只有3个固定值可选:default | black | black-translucent 如果设置为 default,状态栏将为正常的,即白色,网页从状态栏以下开始显示; 如果设置为 black,状态栏将为黑色...,网页从状态栏以下开始显示; 如果设置为 black-translucent,状态栏将为灰色半透明,网页将充满整个屏幕,状态栏会盖在网页之上; 该设置只在 iOS 上有效。
最近在项目中经常用到UITableView中的cell中带有UITextField或UITextView的情况,然后在这种场景下,当我们点击屏幕较下方的cell进行编辑时,这时候键盘弹出来会出现遮挡待输入的...言归正传,下面就说回到我们要解决的问题,在UITableView的cell中,系统自带的UITableViewCell的格式没有自带UITextField或UITextView这种可以编辑的区域的,而这种类型的...,即即将注销第一响应者时,系统会调用 textFieldShouldEndEditing: 方法 文本框注销第一响应者,对应的响应时间就是系统收回键盘,并且在隐藏键盘时会发出 UIKeyboardWillHideNotification...,开始编辑的时候返回当前cell相对屏幕的位置方便我们控制是否上移tableview,结束编辑时返回我们编辑框的内容方便进行记录。...,然后在应用自定义cell时设定我们的两个回调block,当开始编辑时,通过回调block回传的frame参数设置对应的editFrame。
y, z: Double 注意:一般来说,很少写类型标注,如果你在声明常量或者变量的时赋了初始值,swift可以推断出这个常量或者变量的类型,上述的例子中,没有给name赋初始值,它使用的是指定变量类型...这可以让你在开发的时候尽早发现并修复错误 let meaningOfLife = 42 //推测为 Int 类型 let pi = 3.14159 // 当推断浮点数的类型时,Swift 总是会选择 Double...nil 给可选变量赋值为nil来表示它没有值: var value: Int?...= 10 // value 包含一个可选的 Int 值 10 value = nil // value 现在不包含值 声明一个可选常量或者变量但是没有赋值,它们会自动被设置为 nil var message...来获取一个不存在的可选值会导致运行时错误。使用 ! 来强制解析值之前,一定要确定可选包含一个非 nil 的值。
所以尽可能地避免使用强制解析,将有助于搭建更加稳定的应用,并且在发生错误时提供更好的报错信息。那么如果是编写测试时,情况会怎么样呢?...如果这样的事情发生了,错误信息可能只会像下面这样: Fatal error: Unexpectedly found nil while unwrapping an Optional value 尽管用...Xcode 本地运行时这不是个大问题(因为错误会被关联地显示 —— 至少在大多数时候 ),但当连续地整体运行整个项目时,它可能问题重重。...上述的错误信息可能出现在巨大的“文字墙”中,导致难以看出错误的来源。更严重的是,它会阻止后续的测试被执行(因为测试进程会崩溃),这将导致修复工作进展缓慢并且令人烦躁。...这在某些使用情况下完全可用,包括我们 UserManager 的例子。因为我们对已经登录的 user 的 name 和 age 属性使用了断言,如果任意一个属性为 nil ,我们会自动得到错误提示。
= 404 当要使用一个可选类型的变量时,要在后面加感叹号“!”或者“?”。...,swift不能隐式的自动推断可选型 代码示例1: //swift不能用同类中的一个特殊值代表无或者没有,nil代表没有,但是却不能直接使用,如下: var errorCode :Int = 404 errorCode...,较为安全 //当不确定使用的可选型变量是否是nil,通过?执行调用方法等操作,意味着不为nil时才可以执行成功 var errorCode: String?...= nil errorMessage = "not found" //这里errorMessage是隐式可选型,使用时候不需要显式的解包,但是如果errorMessage为nil就会报错 "The error...如果值为nil,就不会执行任何操作,因此也不会产生运行错误。 非可选型的变量或者常量不可能赋值为nil,所以不能使用:notOptioalValue != nil,判断是否nil。
如果你观察GC暂停的时间,它会随着活动的goroutine的数量不断增加。GC暂停的次数越多,CPU利用率就越高,响应时间也越来越长。 回到这个问题上,什么是goroutine泄漏?...但这里发生的情况是,会有一个没有被管理的goroutine驻留在内存中,占用CPU和RAM。 为什么呢?...当我们把一个channel传递给goroutine去消费时,当发送者向通道发送数据时出现了问题,这是否也是同样的情况?...我们有另一个微服务,我们称之为实时动态折扣器(DD),它试图根据一些算法(黑盒子)来计算折扣。 这个动态折扣是一个A/B实验,只有10%的用户会参与其中。...因此,如果我们在defer函数中开始接收通道中的数据,那么在成功的情况下就会阻塞主goroutine。 方法-3 没有完美的方法。
} Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil} Directory: PChar; {缺省目录} ShowCmd: Integer {打开选项...} ERROR_FILE_NOT_FOUND = 2; {文件名错误} ERROR_PATH_NOT_FOUND = 3; {路径名错误} ERROR_BAD_FORMAT = 11; {EXE 文件无效...当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。...当参数设为nil时,表示执行默认操作“open”。 ●FileName:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。...若返回值小于32,则表示出现错误。 上述仅仅是ShellExecute函数的标准用法,下面将介绍它的特殊用法。
让我们来看看在Debian GNU/Linux Jessie安装中出现的一些常见选项,并尝试理解这一切。 ?...如果系统的shell使用的是Bash,则/etc/bash.bashrc 文件会替代$PS变量来处理主提示字符串(特殊情况除外)。后面我们会简短地说一下/etc/bash.bashrc。...一些显示管理器会直接将这些文件视为错误地配置文件,例如Gnome显示管理器。但一些其他的显示管理器,例如LightDm不会这样。幸运的是,你还有一些其他的选项。...并且当这个脚本终止时,你会返回到显示管理器登录界面。 和~/.xsessionrc相似,~/.xsession默认也是不存在的,在你需要的时候你可以创建一个。...主要的限制因素在于.bash_logout仅在注销交互式shell时读取,并且并不能假定它在注销X会话时会被加载。 其他选项 上面那些已经为你介绍了大部分的通用选项。
本周,让我们来看看使用单例的问题到底是什么,并探讨一些可以用来避免这些问题的技巧。让我们直接开始吧! 为什么单例如此受欢迎? 首先,让我们先问一下,为什么单例一开始就这么受欢迎。...如果大多数开发者都同意应该避免使用单例,为什么它们会不断出现? 我认为答案有两个部分: 首先,我认为在为苹果公司的平台编写应用程序时,单例模式被大量使用的一个主要原因是苹果公司自己经常使用它。...它们的状态会自动在整个应用程序中共享,而当这种状态意外改变时,往往会开始出现bug。 单例和依赖它们的代码之间的关系通常不是很好定义。...很明显,它依赖于UserManager,而且它必须作为一个可选值访问currentUser,因为我们没有办法在编译时保证数据在视图控制器被呈现时确实存在。...在这里,我们将当前的User作为一个非可选值注入,以及一个LogOutService,可以用来执行注销操作: class ProfileViewController: UIViewController
(字面量就是会直接出现在你代码中的值,比如42和3.14159。)...会被推测为 Int 类型 同理,如果你没有给浮点字面量标明类型,Swift 会推测你想要的是Double: let pi = 3.14159 // pi 会被推测为 Double 类型 当推测浮点数的类型时...来获取一个不存在的可选值会导致运行时错误。使用!来强制解析值之前,一定要确定可选包含一个非nil的值。...如果你声明一个可选常量或者变量但是没有赋值,它们会自动被设置为nil: var surveyAnswer: String?...你可以把隐式解析可选当做一个可以自动解析的可选。你要做的只是声明的时候把感叹号放到类型的结尾,而不是每次取值的可选名字的结尾。 注意:如果你在隐式解析可选没有值的时候尝试取值,会触发运行时错误。
回到主页你可以看到LastPass插件提示存在一个匹配的凭证,但是我还没有加载一个含有表单字段的页面,所以也就没有出现“自动填充”了。 ?...QNAP站点虽然被加载但是没有填充到表单中所以内存中没有数据。然而我通过内存进行搜索尝试分析其他数据时,我发现了一条有趣的信息。 ?...正当我在考虑如何才能使用这个PrivateKey时,脑中浮现出一幅场景。如果主密码本身就在内存中,为何到现在都还没有发现呢?我假设它只是被清除了,在此之前密码就已经被解密了。...事实上使用grep我的确发现了以明文方式出现的用户名及密码,但是这个场景也只在一个快照中出现过。 接下来我进行了一连串的变化。打开选项卡,关闭选项卡,恢复选项卡。...我得出的结论是如果选项卡中打开的网页已经完成登录,在大多数情况下能够获取到凭证。当恢复选项卡时打开其他的网页,想要找到完整的数据结构就变得很困难了。
* [注] 勾选“最小化主窗口时隐藏本程序在 Windows系统任务栏托盘的图标……”选项,主窗口最小化时会同时隐藏系统托盘的图标,这时候只有使用热键才能呼出主窗口。...这个状态下如果想要退出程序,需要在程序主窗口显示在桌面的时候,在托盘里的“定时执行专家”图标上右键选择“退出”。结合“开机启动”选项和本选项,可以做到隐藏自动启动,用户无察觉。...(图5-3,定时执行专家 – 设置对话框) * [注] 热键【恢复本程序主窗口】设置之前,请先确认把“最小化主窗口时隐藏本程序在 Windows系统任务栏托盘的图标……”选项的勾选去掉,不然热键设置冲突之后...热键设置之后,重启软件或者重启Windows系统之后,确认热键没有冲突后,再勾选“最小化主窗口时隐藏本程序在 Windows系统任务栏托盘的图标……”选项,即可实现开机自动隐藏执行的效果。...* [注] 热键【捕获完整屏幕截图】执行需要确保任务列表中(图 5-3-1)至少有一个【自动截屏】任务,这个热键的执行和任务的状态是否可用没有关系。
领取专属 10元无门槛券
手把手带您无忧上云