【读书笔记】100个Switf必备tips

声明

欢迎转载,但请保留文章原始出处:)

博客园:http://www.cnblogs.com

农民伯伯: http://over140.cnblogs.com

正文

1、Selector

在Swift中可以用字符串常量来构造Selector,例如:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "handleMoviePlayerLoadStateDidChange:", name: MPMoviePlayerLoadStateDidChangeNotification, object: nil)
    func handleMoviePlayerLoadStateDidChange(notification: NSNotification)

注意这个字符串常量最后的那个冒号,如果有一个参数就加1个冒号,没有就不加,多参数则在第一个冒号的后面接上参数名并再加一个冒号,类似于"method:param2:param3:"。

2、使用多元组(Tuple)交换变量的值

func swapMe<T>(inout a: T, inout b: T) {
        (a,b) = (b,a)
    }

3、"="不支持操作符重载(——好像不是本书的内容,暂时一并写在这一起了)

4、func的参数默认是let不可变的,可以自己自己一个var,注意这并不影响外面的参数,例如:

func incrementor(var variable: Int) -> Int {
        return ++variable
    }

5、需要保证在当前子类实例的成员初始化完成后才能调用父类的初始化方法。子类空初始化方法override init不需要显示的调用super.init

加convenience的初始化方法子类不能重载,但是可以调用

加required的初始化方法子类必须重载

6、在需要处理大量数据并且频繁操作 (增 减) 其中元素时,选择 NSMutableArray 和 NSMutableDictionary 会更好,而对于容器内条 目小而容器本身数目多的情况,应该使用 Swift 语言内建的 Array 和 Dictionary。

7、一般使用弱引用weak的场景:

设置delegate时

在self属性存储为闭包时,其中拥有对self引用时

8、可以以产生致命错误 (fatalError) 的方式来终止程序

比如不合法的参数

9、让一个类属性对内可读写对外只读

public class MyClass {
        public private(set) var name: String?
    }

结束

学习iOS开发差不多快2月了,陆陆续续做了一些笔记,以后也会分享更多swift的内容。非常推荐大家购买和阅读这本电子版的《100个Switf必备tips》(http://swifter.tips/)!

时间: 2024-08-08 09:52:12

【读书笔记】100个Switf必备tips的相关文章

【读书笔记《C# 开发实战1200例》】1.3 快速开发项目必备

009.为项目添加DLL文件引用 1.选中项目单击右键,选择“添加引用” PS:DLL文件是一种最常用的第三方组件表示形式,在 C# 中引用 DLL 文件后,可以直接使用其中编写好的方法来实现相应的功能,从而提高程序的开发效率. 010.为项目添加已有类 1.同理,右键“添加” - “现有项” PS:已知类就是已经编好的类,类就是面向对象编程的核心,它可以封装数据成员.函数成员和其他类等信息, C# 中使用关键字 class 来声明类. 011.为项目添加第三方控件 1.新建Windows窗体应

《C#图解教程》读书笔记之五:委托和事件

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.委托初窥:一个拥有方法的对象 (1)本质:持有一个或多个方法的对象:委托和典型的对象不同,执行委托实际上是执行它所"持有"的方法.如果从C++的角度来理解委托,可以将其理解为一个类型安全的.面向对象的函数指针. (2)如何使用委托? ①声明委托类型(delegate关键字) ②使用该委托类型声明一个委托变量 ③为委托类型增加方法 ④调用委托执行方法 (3)委托的恒定性: 组合委托.为委托+=增加

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力. 一.网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性: (2)横向分离:将不同的业务模块分离部署

《别让不会说话害了你》---读书笔记

别让不会说话害了你[读书笔记] O .会说话才是人生的决胜点 1. 训练自己在大庭广众之下说话的勇气. 2. 三十秒就能抓住重点. 3. 看完书,开始开始自我演讲训练后,可以把自己训练的实况录下来,放在视频网站上,或者直接以附件的形式发邮件给作者,作者将在最短的时间内看完录像并回复,提供专业又深入的意见,指导我们更上一层楼. 一.消除恐惧发--认清恐惧,对症下药 1. 诚实面对自己,通过自我对话.自问自答,拉高视野重新审视一切的方式,就能面对恐惧的根源,针对既有的恐惧对症下药,使害怕的感觉烟消云

自然语言处理一些读书笔记和自己的思考。

在知乎上搜索相关问题,有人推荐<数学之美>,之前粗略看过一次,这次想重新看一下并且做个读书笔记.下面是关于自然语言理解方面的一些读书笔记和自己的思考. 一. 自然语言处理历史: 自然语言处理最初发展的20多年里,相关科学家都极力通过电脑模拟人脑,试图用这种方式来处理人类语言,但是这种方式被证明是行不通的,成功几乎为零.NLP发展的第二阶段是70年代之后,科学家们终于找到了基于数学模型和统计的方法. 第一阶段的时候,学术界对人工智能和自然语言理解的普遍认识是:要让机器完成翻译或者语音识别等等,必

Android群英传神兵利器读书笔记——第三章:Android Studio奇技淫巧

Android群英传神兵利器读书笔记--第三章:Android Studio奇技淫巧 这篇文章篇幅较长,可以使用版权声明下面的目录,找到感兴趣的进行阅读 目录 3.1 Android Studio使用初探 Project面板 Stucture面板 Android Monitor Keymap Tip of the Day 快速查找 Search Action 演示模式 3.2 Android Studio使用进阶 操作与导航 快速重构 代码模板 内置模板 自定义代码注释模板 代码分析 在Andr

Java 线程第三版 第四章 Thread Notification 读书笔记

一.等待与通知 public final void wait() throws InterruptedException 等待条件的发生. public final void wait(long timeout) throws InterruptedException 等待条件的发生.如果通知没有在timeout指定的时间内发生,它还是会返回. public final void wait(long timeout, int nanos) throws InterruptedException

【转】《windows核心编程》读书笔记

这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁,往往是很多单独的字句,后面的内容更为连贯. 海量细节. 第1章    错误处理 1.         GetLastError返回的是最后的错误码,即更早的错误码可能被覆盖. 2.         GetLastError可能用于描述成功的原因(CreatEvent)

Linux内核架构读书笔记 - 2.5.3 处理优先级

1 优先级的内核表示 内核使用 0 - 139 表示内部优先级,值越低,优先级越高.0 -99 实时进程使用 nice 值 [-20,19]映射到范围100 - 139,如下图 内核定义了一系列宏来辅助优先级之间的转换 sched.h 1 /* 2 * Priority of a process goes from 0..MAX_PRIO-1, valid RT 3 * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH 4 *