原创文章,欢迎转载。转载请注明:关东升的博客什么是设计模式。设计模式是在特定场景下对特定问题的解决方案,这些解决方案是经过反复论证和测试总结出来的。实际上,除了软件设计,设计模式也被广泛应用于其他领域,比如UI设计和建筑设计等。下面来介绍Cocoa Touch框架中的设计模式中的单例模式。单例模式单...
原创文章,欢迎转载。转载请注明:关东升的博客内存托管对象Swift中调用Core Foundation函数获得对象时候,对象分为:内存托管对象和内存非托管对象。内存托管对象就是由编译器帮助管理内存,我们不需要调用CFRetain函数获得对象所有权,也不需要调用CFRelease函数放弃对象所有权。获...
原创文章,欢迎转载。转载请注明:关东升的博客Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API。虽然在Swift中调用这种C语言风格的API比较麻烦,但是在OS X和iOS开发过程中,有时候使用Core Foundation框架的A...
原创文章,欢迎转载。转载请注明:关东升的博客代码排版包括: 空行、空格、断行和缩进等内容。代码排版内容比较多工作量很多,但是非常重要。空行空行将逻辑相关的代码段分隔开,以提高可读性。下列情况应该总是添加空行: 类型声明之前。 import语句前后。 两个方法或函数之间。 块注释或单行注释之前...
原创文章,欢迎转载。转载请注明:关东升的博客声明是在声明变量、常量、属性、方法或函数和自定义类型时候需要遵守的规范。首先变量或常量时每行声明变量或常量的数量推荐一行一个,因为这样以利于写注释。示例代码如下。推荐使用:let level = 0var size = 10不推荐使用:let level ...
原创文章,欢迎转载。转载请注明:关东升的博客前面说到Swift注释的语法有两种:单行注释(//)和多行注释(/*...*/)。这里来介绍一下他们的使用规范。1. 文件注释文件注释就在每一个文件开头添加注释,文件注释通常包括如下信息:版权信息、文件名、所在模块、作者信息、历史版本信息、文件内容和作用等...
原创文章,欢迎转载。转载请注明:关东升的博客在使用try进行错误处理的时候,经常会看到try后面跟有问号(?)或感叹号(!),他们有什么区别呢?1.使用try?try?会将错误转换为可选值,当调用try?+函数或方法语句时候,如果函数或方法抛出错误,程序不会发崩溃,而返回一个nil,如果没有抛出错误...
原创文章,欢迎转载。转载请注明:关东升的博客能放到try后面调用函数或方法都是有要求的,他们是有可能抛出错误,在这些函数或方法声明的参数后面要加上throws关键字,表示这个函数或方法可以抛出错误。声明抛出错误方法示例代码如下://删除Note记录方法func remove(model: Note)...
原创文章,欢迎转载。转载请注明:关东升的博客扩展类型的时候,也可以添加新的构造函数。值类型与引用类型扩展有所区别。值类型包括了除类以外的其他类型,主要是枚举类型和结构体类型。值类型扩展构造函数扩展结构体类型中定义构造函数的示例:struct Rectangle { var width : Do...
原创文章,欢迎转载。转载请注明:关东升的博客可以在原始类型上扩展计算属性,包括实例计算属性和静态计算属性。添加计算属性的定义,与普通的计算属性的定义是一样的。实例计算属性示例:在网络编程时,为了减少流量,从服务器端返回的不是信息描述,而是编码,然后在本地再将编码转换为描述信息。为此定义了如下Int类...
原创文章,欢迎转载。转载请注明:关东升的博客声明扩展的语法格式如下:extension 类型名 { //添加新功能}声明扩展的关键字是extension,“类型名”是Swift中已有的类型,包括类、结构体和枚举,但是我们仍然可以扩展整型、浮点型、布尔型、字符串等基...
原创文章,欢迎转载。转载请注明:关东升的博客继承会发生在子类和父类之间,是一系列类的继承关系。例如:Person是类层次结构中的根类,Student是Person的直接子类,Worker是Person的直接子类。这个继承关系类的具体实现代码如下:class Person { var name:...
原创文章,欢迎转载。转载请注明:关东升的博客在类的定义中使用final关键字声明类、属性、方法和下标。final声明的类不能被继承,final声明的属性、方法和下标不能被重写。下面看一个示例:final class Person { //声明为final,说明它是不能被继承的 var n...
原创文章,欢迎转载。转载请注明:关东升的博客下标是一种特殊属性。子类属性重写是重写属性的getter和setter访问器,对下标的重写也是重写下标的getter和setter访问器。下面看一个示例:class DoubleDimensionalArray { let rows: Int...
原创文章,欢迎转载。转载请注明:关东升的博客重写实例属性我们可以在子类中重写从父类继承来的属性,属性有实例属性和静态属性之分,他们在具体实现也是不同的。实例属性的重写一方面可以重写getter和setter访问器,另一方面可以重写属性观察者。计算静态属性需要使用getter和setter访问器,而存...
原创文章,欢迎转载。转载请注明:关东升的博客Swift中的子类构造函数的来源有两种:自己编写和从父类继承。并不是父类的所有的构造函数都能继承下来,能够从父类继承下来的构造函数是有条件的,如下所示。 条件1:如果子类没有定义任何指定构造函数,它将自动继承所有父类的指定构造函数。 条件2:如果子类提...
原创文章,欢迎转载。转载请注明:关东升的博客在构造函数中可以使用构造函数代理帮助完成部分构造工作。类构造函数代理分为横向代理和向上代理,横向代理只能在发生在同一类内部,这种构造函数称为便利构造函数。向上代理发生在继承的情况下,在子类构造过程中,要先调用父类构造函数初始化父类的存储属性,这种构造函数称...