- 浏览: 417701 次
- 性别:
- 来自: 北京
最新评论
-
rkikbs:
有下载地址么?
我的iOS视频开放了,欢迎大家在线观看 -
wjpiao:
支持支持!
我的iOS视频开放了,欢迎大家在线观看 -
关东升:
wwwang89 写道关老师,你好 ,请问:我的服务器端是用j ...
iOS网络编程-ASIHTTPRequest框架同步请求 -
wwwang89:
关老师,你好 ,请问:我的服务器端是用java写的,不是.ne ...
iOS网络编程-ASIHTTPRequest框架同步请求 -
关东升:
crowning_2008 写道关老师 好!你好
iOS开发那些事-关于性能优化–选择nib还是故事板的讨论
文章列表
原创文章,欢迎转载。转载请注明:关东升的博客
Swift中的继承只能发生在类上,不能发生在枚举和结构体上。一个类可以继承另一个类的方法、属性、下标等特征,当一个类继承其他类时,继承类叫子类,被继承类叫父类(或超类)。子类继承父类后,可以重写父类的方法、属性、下标等特征。
为了了解继承性,看这样一个场景:一位面向对象的程序员小赵,在编程过程中需要描述和处理个人信息,于是他定义了类Person,如下所示:
class Person {
var name: String
var age: Int
func description() -> S ...
原创文章,欢迎转载。转载请注明:关东升的博客
与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程。在析构过程中也会调用一种特殊的方法deinit,称为析构函数。析构函数deinit没有返回值,也没有参数,也不需要参数的小括号,所以不能重载。
下面看看示例代码:
class Rectangle {
var width: Double
var height: Double
init(width: Double, height: Double) {
self.width = width
...
Swift 2.0学习笔记(Day 39)——构造函数重载
原创文章,欢迎转载。转载请注明:关东升的博客
构造函数作为一种特殊方法,也可以重载。
Swift中构造函数可以多个,他们参数列表和返回值可以不同,这些构造函数构成重载。
示例代码如下:
class Rectangle {
var width: Double
var height: Double
init(width: Double, height: Double) {
self.width = width
self.height ...
原创文章,欢迎转载。转载请注明:关东升的博客
构造函数的主要作用是初始化实例,其中包括:初始化存储属性和其它的初始化。在Rectangle类或结构体中,如果在构造函数中初始化存储属性width和height后,那么在定义他们时就不需要初始化了。
Rectangle类代码如下:
class Rectangle {
var width: Double
var height: Double
init() {
width = 0.0
height = 0.0
}
}
如果存储属性在构造函 ...
原创文章,欢迎转载。转载请注明:关东升的博客
结构体和类的实例在构造过程中会调用一种特殊的init方法,称为构造函数。构造函数没有返回值,可以重载。在多个构造函数重载的情况下,运行环境可以根据它的外部参数名或参数列表调用合适的构造函数。
默认构造函数
结构体和类在构造过程中会调用一个构造函数,即便是没有编写任何构造函数,编译器也会提供一个默认的构造函数。下面看示例代码:
lass Rectangle {
var width: Double = 0.0
var height: Double = 0.0
}
var ...
原创文章,欢迎转载。转载请注明:关东升的博客
静态方法与静态属性类似,Swift中定义了静态方法,也称为类型方法。静态方法的定义与静态属性类似,枚举和结构体的静态方法使用的关键字是static;类静态方法使用的关键字是class或static,如果使用static定义,则该方法不能在子类中被重写(override);如果使用class定义,则该方法可以被子类重写。
结构体静态方法
看一个结构体静态方法的示例,代码如下:
struct Account {
var owner: String = "Tony" //声 ...
原创文章,欢迎转载。转载请注明:关东升的博客
我先来设计一个类:有一个Account(银行账户)类,假设它有3个属性:amount(账户金额)、interestRate(利率)和owner(账户名)。
在这3个属性中,amount和owner会因人而异,不同的账户这些内容是不同的,而所有账户的interestRate都是相同的。
amount和owner属性与账户个体有关,称为实例属性。
原创文章,欢迎转载。转载请注明:关东升的博客
计算属性本身不存储数据,而是从其他存储属性中计算得到数据。
计算属性概念:
计算属性提供了一个getter(取值访问器)来获取值,以及一个可选的setter(设置访问器)来间接设置其他属性或变量的值。计算属性的语法格式如下:
面向对象类型类型名 {
存储属性
......
var 计算属性名: 属性数据类型 {
get {
return 计算后属性值
}
...
原创文章,欢迎转载。转载请注明:关东升的博客
Swift中的属性分为存储属性和计算属性,存储属性就是Objective-C中的数据成员,计算属性不存储数据,但可以通过计算其他属性返回数据。
存储属性可以存储数据,分为常量属性(用关键字let定义)和变量属性(用关键字var定义)。
存储属性概念:
原创文章,欢迎转载。转载请注明:关东升的博客
类和结构体非常相似,很多情况下没有区别。如果你是设计人员在进行系统设计时候,是将某种类型设计成为类还是结构体?
类和结构体异同:
类和结构体都有如下功能:
定义存储属性
定义方法
定义下标
定义构造函数
定义扩展
实现协议
只有类才有的功能:
能够继承另外一个类
能够核对运行期对象的类型
析构对象释放资源
原创文章,欢迎转载。转载请注明:关东升的博客
访问级别:
Swift提供了3种不同访问级别,对应的访问修饰符为:public、internal和private。这些访问修饰符可以修饰类、结构体、枚举等面向对象的类型,还可以修饰变量、常量、下标、元组、函数、属性等内容。
<!--[if !supportLists]-->l<!--[endif]-->public。可以访问自己模块中的任何public实体。如果使用import语句引入其他模块,我们可以访问其他模块中的public
原创文章,欢迎转载。转载请注明:关东升的博客
在使用可选类型和可选链时,多次使用了问号(?)和感叹号(!),但是它们的含义是不同的,下面我来详细说明一下。
1. 可选类型中的问号(?)
声明这个类型是可选 ...
原创文章,欢迎转载。转载请注明:关东升的博客
可选类型:
我们先看看如下代码:
var n1: Int = 10
n1 = nil //编译错误
let str: String = nil //编译错误
Int和String类型不能接受nil的,但程序运行过程中有时被复制给nil是在所难免的,Swift为每一种数据类型提供一种可选类型(optional),即在某个数据类型后面加上问号(?)或感叹号(!
原创文章,欢迎转载。转载请注明:关东升的博客
在Swift程序表达式中会看到问号(?)和感叹号(!),它们代表什么含义呢?这些符号都与可选类型和可选链相关,下面来看看可选链。
可选链:
类图:
它们之间是典型的关联关系类图。这些类一般都是实体类,实体类是系统中的人、事、物。Employee通过dept属性与
原创文章,欢迎转载。转载请注明:关东升的博客
Swift中的类和结构体定义的语法是非常相似的。类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下:
class 类名 {
定义类的成员