iOS开发
冯可乐同学
纸上得来终觉浅,绝知此事要躬行。
仰望星空,脚踏实地
展开
-
iOS 模拟器中点击 TextFiled后不弹出软键盘的解决方法
选中模拟器然后看在MAC机上方模拟器菜单“Hardware”---“keyboard”---“Connect Hardware Keyboard”。勾选一下。就可以取消和键盘的关联。原创 2017-08-08 20:58:03 · 984 阅读 · 0 评论 -
每天学一点Swift----泛型(二)
四.类型约束1. 虽然程序可以对泛型形参传入任何类型,但有时候为泛型形参增加某种特定的约束也是必要的。就像字典,Dictionary的key的类型也是通过泛型形参来表示的,但Dictionary并不允许任意一种类型的数据都能作为key,只有实现了Hashable协议的类型才能作为key。这就是一种类型约束。2. 类型约束就是指定义类型参数时增加一个限制,约束这种类型参数必须继承原创 2017-06-16 22:44:34 · 444 阅读 · 0 评论 -
每天学一点Swift---- 运算符函数
一. 运算符重载1. Swift的运算符提供了良好的可扩展性,Swift不仅允许开发者重新定义已有的运算符(运算符重载),甚至允许开发者实现新的运算符。从本质上来看,Swift的运算符其实就是一个运算符函数,因此只要能用函数实现的功能,程序都可以讲起转换为运算符。2. 重新定义+、-、x、/的运算符函数,实现自己认为合理的功能就是运算符重载(函数重载),不再啰嗦。原创 2017-06-17 22:53:23 · 691 阅读 · 0 评论 -
每天学一点Swift----面向对象上(九)
十一.下标 1. 访问数组、字典时的方式就是下标的用法。 2. 所有的Swift类型(包括枚举、结构体、类)都支持定义下标。下标可以作为访问对象、集合或序列的简化方式。 3. 同一个类型可以定义多个下标,Swift允许通过下标的形参列表或返回值类型不同重载下标。 4. Swift中使用subscript关键字来定义下标,定义下标的语法为: subscrip原创 2017-05-31 21:19:34 · 286 阅读 · 0 评论 -
每天学一点Swift----闭包(一)
五.嵌套函数 1. Swift还支持在函数体内定义函数,这种在函数体内定义的函数称为嵌套函数 2. 默认情况下,嵌套函数对外部是隐藏的。嵌套函数只能在其封闭函数内有效,其封闭函数也可以返回嵌套函数类型,以便程序在其他作用域中使用嵌套函数。----举个栗子:重新改写得到square函数或其他函数的例子 //定义函数,该函数的返回值类型为(Int)-> Int原创 2017-05-20 21:56:24 · 340 阅读 · 0 评论 -
每天学一点Swift----泛型(一)
一.泛型的作用1. 泛型是一种非常灵活的语法,泛型允许程序在函数、枚举、结构体、类中定义类型形参,这种类型形参实际代表的类型是动态改变的----程序可以等到真正使用这些函数、枚举、结构体时才为这些类型形参传入实际的类型。而且每次使用这些函数、枚举、结构体、类时都可以为泛型的类型形参传入不同的类型。2. 实例上,Swift的泛型无处不在,许多Swift的标准库都是通过泛型原创 2017-06-15 22:13:40 · 549 阅读 · 0 评论 -
每天学一点Swift----面向对象上(十二)
十四.构造器1. 构造器用于完成实例的构造过程。这个过程包括为实例中的每个存储属性设置初始值和执行必要的准备和初始化任务。2. Swift的构造器本质上就是一个或多个名为init的函数(不允许使用func关键字)3. 构造器的主要作用就是完成实例中每个类、结构体中实例存储属性(枚举不能定义实例存储属性)的初始化。为实例存储属性赋初始值有两个时机:定义实例存储属性时指原创 2017-06-04 20:17:03 · 333 阅读 · 0 评论 -
每天学一点Swift----函数(二)
三.函数类型 1. Swift的每个函数都有类型的,函数类型由函数的形参列表,返回值类型组成。 2. 使用函数类型定义变量:就像使用普通类型定义变量一样。举个栗子: var myFun : (Int, Int) -> Int //定义一个变量,其类型为(Int, Int) -> Int var test : (String) -> String //原创 2017-05-19 19:36:14 · 613 阅读 · 0 评论 -
每天学一点Swift----面向对象上(八)
十.方法(续)11. 值类型可变的方法:默认情况下,结构体和枚举的实例方法不能改变该实例的存储属性。如果像让值类型的实例方法改变该实例的存储属性,程序需要用mutating将方法声明为可变方法。12. 可变方法甚至可以在方法体内对隐式的self重新赋值,这会使得新赋值的实例将在方法结束后替换原有的实例。13. 举个栗子:struct test {原创 2017-05-30 10:04:36 · 451 阅读 · 0 评论 -
每天学一点Swift----面向对象下(一)
1. 除了前面学习的关于枚举、结构体和类的基本语法外,Swift也很好地支持面向对象的三大特征:封装、继承和多态。(只有类才支持继承和多态) 2. Swift中的扩展和协议等也是重要的内容。Swift中的协议相当于Java语音中的接口的概念,协议体现了多个类必须遵守的规范。而且协议与委托是iOS开发的重要内容。 一.继承 1. Swift中继承同Java原创 2017-06-05 23:08:52 · 487 阅读 · 0 评论 -
每天学一点Swift----闭包(二)
七.闭包表达式 1. 调用闭包(使用闭包返回值):闭包的本质是功能更加灵活的代码块,因此完全可以将闭包赋值给变量(联想函数类型的变量)或直接调用闭包。举个栗子://定义一个闭包,并为闭包表达式的形参定义外部形参名,然后将闭包赋值给square变量var square = {(value val : Int) -> Int inreturn val * val原创 2017-05-21 21:44:27 · 384 阅读 · 0 评论 -
每天学一点Swift----面向对象下(九)
十八.隐藏与封装1. 封装指的是将实例的状态信息、实现细节隐藏在实例内部,不允许外部程序直接访问实例的内部信息,只能通过该类型所提供的公开方法来访问和操作实例的内部信息。2. 对一个类型或实例实现良好的封装,可以实现以下目的:(1)隐藏类的细节(2)让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里面加入逻辑控制,限制对属性的不合理访问(3)可进行数据检查原创 2017-06-13 23:07:27 · 310 阅读 · 0 评论 -
每天学一点Swift----面向对象下(八)
十五.可选协议1. Swift还支持在协议中定义定义可选成员要求(包括属性、方法、下标,不包括构造器)----是可选成员要求,不是可选成员。可选成员要求的意思是:该协议的实现类型既可以实现这些协议成员,也可以不实现这些协议成员。2. 只要在协议成员前添加关键optional关键字即可定义可选协议。3. 由于协议的实现者可以不实现可选协议的要求,因此程序面向对象编程时原创 2017-06-12 23:06:10 · 521 阅读 · 0 评论 -
每天学一点Swift----面向对象下(七)
十一.使用协议作为类型1. 协议也相当于一种类型,与枚举、结构体、类相比,协议相当于一种抽象的类型,它被彻底抽象成只定义规范,不负责实现。因此定义协议之后,就可以像枚举、结构体、类那样当作类型来使用,只是协议不能直接用于创建实例,协议可以做如下方面的用途:(1)可使用协议声明变量(2)可使用协议作为函数、方法、构造器的形参类型、返回值类型(3)可使用协议作为is、as等运算符的原创 2017-06-11 19:28:51 · 499 阅读 · 0 评论 -
每天学一点Swift----面向对象下(六)
六.协议1. Swift协议作用完全类似于Objective-C的协议,用于定义多个类型应该遵守的规范。----本质和Java中的接口相同。2. 类是一种具体的实现体。而协议定义了一种规范,协议定义某一批类所需要遵守的规范,协议不关心这些类的内部状态数据,也不关心这些类里方法的具体实现细节。它只是规范这批类里必须提供某些方法,提供这些方法的类就可满足实际需求。3.原创 2017-06-10 21:19:06 · 313 阅读 · 0 评论 -
每天学一点Swift----面向对象下(五)
四.嵌套类型 1. Swift允许在一个类型的内部定义另一个类型,这种机制被称为嵌套类型。 2. 对比于Java,Swift的嵌套类型就类似于Java中的内部类。 3. Swift的枚举、结构体、类的内部都可以定义嵌套类型,被嵌套的类型也可以是枚举、结构体和类。Swift的嵌套类型支持多级嵌套,即嵌套类型还可以再包含嵌套类型。原创 2017-06-09 22:06:27 · 283 阅读 · 0 评论 -
每天学一点Swift----面向对象下(四)
三.多态 1. Swift引用变量有两个类型:一个编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,编译器只认每个变量的编译时类型;运行时类型由实际赋给该变量的实例决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多态。 2. Swift中的多态和Java中的多态的概念是一样的,即:父类引用指向子类对象。 3. 多原创 2017-06-08 21:48:12 · 566 阅读 · 0 评论 -
每天学一点Swift----面向对象下(三)
二.类的构造和析构(续) 1. Swift中,子类不会自动继承父类的构造器,只有满足如下规则时,子类才会自动继承父类的构造器: (1)规则1:如果子类没有提供任何指定构造器,那么它将自动继承父类的所有指定构造器 (2)规则2:如果子类实现了父类所有的指定构造器,无论是通过规则1继承实现的,还是通过程序编码实现的,它都将自动继承父类的所有便利构造器。原创 2017-06-07 21:29:37 · 364 阅读 · 0 评论 -
每天学一点Swift----面向对象下(二)
二.类的构造和析构 1. 通过集成后,子类中不仅有父类中的存储属性,还有子类自己的存储属性。子类中的所有存储属性都必须在构造器中设置初始值,因此类的构造过程会相对比较复杂。 2. 与构造器相反的是,Swift允许为类(枚举、结构体不允许)定义析构器:在实例临近销毁之前,系统会自动调用该实例的析构器(实例不允许主动调用自己的析构器)。Swift中析构器的本质就是一原创 2017-06-06 19:04:06 · 421 阅读 · 0 评论 -
每天学一点Swift----面向对象下(十)
十九. Swift内存管理1. Swift提供了强大的内存管理机制:Swift通过自动引用计数(ARC)可以很好地管理对象的回收。大部分时候,程序无须关心Swift对象的回收,但在某些特殊情况下,Swift要求程序员进行一些内存管理的处理。2. 只有引用类型变量所引用的对象才需要使用引用计数进行管理,对于枚举、结构体,他们是值类型,因此不需要使用引用计数进行管理。3.原创 2017-06-14 08:00:46 · 380 阅读 · 0 评论 -
每天学一点Swift----函数(一)
1. Swift中支持嵌套函数。 2.与函数紧密相关的另一个概念是闭包,闭包的本质是匿名函数,闭包可以作为表达式,函数参数或函数返回值。因此使用闭包可以让程序更加简洁。 一.函数入门 1. 函数的定义和调用:定义函数时要使用关键字:func func max(x:Int, y:Int) -> Int var result = max(5, 9)原创 2017-05-18 21:42:36 · 584 阅读 · 0 评论 -
每天学一点Swift----面向对象上(十一)
十三.类型属性和类型方法 1. 通过前面的学习,已经知道Swift的类型中有5种成员:属性(存储属性和计算属性)、方法、下标、构造器和嵌套类型。而且属性和方法都可以分为两种:实例的属性/方法和 类型的属性/方法2. 值类型的属性:值类型包括枚举和结构体两种。值类型的属性用static关键字关键字修饰。--不管是存储属性还是计算属性。3. 枚举可以包含类型原创 2017-06-02 21:27:42 · 301 阅读 · 0 评论 -
每天学一点Swift——前言
“五一”放假回来的第一个周末,对我来说是个“重要”的日子,因为我要开始学习iOS开发了。虽然我是一只Android程序猿,但是对iOS开发一直仰慕和倾心很久了,对于这一点,我相信不是只有我一个Android猿吧,哈哈。。。靠着好几个月的省吃俭用,终于在上个月买了一台Mac(目测往后的好几个月依然要吃土了。。。),买的教材书也到了——李刚老师的《疯狂Swift讲义》。接下来就可以正式学习iOS开发了原创 2017-05-07 23:54:50 · 448 阅读 · 0 评论 -
每天学一点Swift----面向对象上(二)
三.类和结构体 1. Swift的类和结构体高度相似,无论在定义语法上还是在用法上。 2. 结构体和类的主要区别是: (1)结构体不支持继承(自然也就不支持类型转换了) (2)结构体不支持定义析构器 (3)结构体是值类型,而类是引用类型 3. 与Objective-C中定义一个类时需要定义接口部分和实现部分的繁琐方式不同,Swift中定义类,原创 2017-05-24 21:35:15 · 329 阅读 · 0 评论 -
每天学一点Swift----面向对象上(一)
一. Swift的面向对象支持 1. Swift不仅提供来面向过程的支持,也提供了全面的面向对象支持。 2. 与普通的面向对象的编程语言不同,Swift可以定义枚举、结构体、类3种面向对象的类型,这3种类型都可被认为是一种自定义的类型,可以使用枚举、结构体、类来定义变量。----在C语言中,结构体和枚举没有面向对象的特征。 3.在这3中类型中,使用枚举和结构体原创 2017-05-23 05:48:52 · 486 阅读 · 0 评论 -
每天学一点Swift----运算符与表达式(一)
Swift中允许重载运算符,也可以自定义运算符。 一.赋值运算符(=) 1. 同Java,C语言相同,将等号右边的值或变量赋值给等号左边的变量或常量。 2. Swift中的赋值运算符是没有返回值的,因此Swift中不支持连续赋值。举个栗子: var a:Int, b:Int; b = a =20; //编译时会对b发出警告。 3. 由于Swif原创 2017-05-13 23:35:22 · 426 阅读 · 0 评论 -
每天学一点Swift----字符和字符串
一.字符类型 1. Swift中使用Character类型表示单个字符,用String类型表示字符串。 2. Swift使用了Unicode字符集来存储字符,因此Swift的字符、字符集几乎可以存储世界上语言的任意字符。 3. 字符必须用双引号包起来。——和java中是不同的 4. 定义字符有3种表示形式 1). 直接通过单个字符来指原创 2017-05-12 19:23:33 · 717 阅读 · 0 评论 -
每天学一点Swift----可选类型
一.可选和nil1. 在任何类型的后面紧跟?即可表示它是可选类型。可选类型的变量可以用来处理“值缺失”的情况。2. 先看一个简单的例子: var str = "abcdef" var num : int = str.toInt(); 由于str转换为Int时有可能会失败,故num可能会没有值,因此不能用Int类型来声明num,应该用可选类型。如下原创 2017-05-11 20:10:09 · 569 阅读 · 0 评论 -
每天学一点Swift----闭包(三)
八.捕获上下文中的变量和常量 1. 闭包可以用访问或修改闭包所在上下文中的变量或常量(对于常量只是访问),这个过程被称为捕获。 2. 即使定义这些变量或常量的作用域已经不存在了,闭包也依然可以访问或修改他们。 3. Swift中最简单的闭包形式就是嵌套函数,嵌套函数可以捕获它所在的封闭韩式的变量、常量或参数。举个栗子: //定义一个函数,该函原创 2017-05-22 21:45:21 · 590 阅读 · 0 评论 -
每天学一点Swift----元组(tuple)类型
1. 元组(tuple)使用圆括号把多个值组合成一个复合值, 元组内的值可以使用任意类型,元组并不要求元组内的值具有相同的类型----可以拿C语言中的结构体,java中的javaBean来类比,个人认为,这是元组的最大的优点。它比前两者方便来许多。2. 定义元组类型的变量: (1). var yuanzu = (128, 12.34, "swift", true);原创 2017-05-10 22:45:22 · 1380 阅读 · 0 评论 -
每天学一点Swift----流程控制
1. 不论哪一种编程语言都会提供两个基本的流程控制结构:分支结构和循环结构。 一.顺序结构 1. if, if...else, if...else if... **** 其中,if后的条件表达式可以是任意类型的表达式,,即这个表达式的返回值可以是任意类型。0或空表示假,非0或非空代表真。 2. Swift中,if后的条件表达式的语句可原创 2017-05-15 21:55:38 · 374 阅读 · 0 评论 -
每天学一点Swift----面向对象上(三)
四.值类型和引用类型 1. 前面已经提到过,Swift中的类是引用类型,而枚举、结构体是只类型。 2. 对于前面的例子var p = Person()来说,程序会先在堆内存里初始化一个Person实例,然后在栈内存里声明一个Person类型的变量,这个Person类型的变量实际上是一个引用,它指向实际的Person实例。所以栈内存里面的引用变量并没有真正存储实例的存储原创 2017-05-25 23:01:05 · 310 阅读 · 0 评论 -
每天学一点Swift----运算符与表达式(二)
三.溢出运算符 1. 默认情况下,Swift不允许整型变量被赋予一个超出表示范围的数,否则会报错。 2. Swift中,如果希望数据溢出时Swift程序只是对溢出的数据进行截断,而不是报错,则可以使用Swift提供的溢出运算符。 3. Swift为 整型 计算提供了5个以&开头的溢出运算符。 &+:溢出加 &-:溢出原创 2017-05-14 09:56:14 · 446 阅读 · 0 评论 -
每天学一点Swift----集合(二)
三.字典:字典中以key-value的形式保存数据,所以同一个字典中key不能重复。 1. 声明字典--两种方式 (1)适宜用泛型。 var myMap : Dictionary (2)使用简化语法。 var scross : [String:Int] **** 中间是冒号,不是逗号 var helath : [String : String]原创 2017-05-17 07:25:54 · 564 阅读 · 0 评论 -
每天学一点Swift----面向对象上(七)
十.方法 1. 方法是类或实例的行为特征的抽象,方法是面向对象理论中重要的组成部分。但从功能上来看,方法完全类似于函数。 2. 方法和函数的区别是:方法必须属于一个类型或一个实例,因此方法不能像函数那样被独立执行。执行方法时必须使用类型本身或实例作为调用者。----在同一个类型内部的方法相互调用时,表面看起来是直接使用方法名,实际上默认是用self在调用。 3. 从面向原创 2017-05-29 23:56:30 · 376 阅读 · 0 评论 -
每天学一点Swift----面向对象上(六)
九.观察者属性 1. 为了让程序能在属性被赋值时获得执行代码的机会,Swift提供了属性观察者机制,*******属性观察者其实就是两个特殊的回调方法: willSet(newValue)----被观察的属性即将被赋值之前自动调用该方法。 didSet(oldValue)----被观察的属性被赋值完成之后自动调用该方法。 2. 只要程序对非延迟存储的存储属性赋原创 2017-05-28 09:57:53 · 438 阅读 · 0 评论 -
每天学一点Swift----面向对象上(五)
八.计算属性 1. 计算属性相当于Java中通过getter、setter合成的属性。枚举、结构体和类都可以定义计算属性。----包括实例计算属性和类型计算属性。 2. 计算属性的底层并不一定有对应的存储变量----因为计算属性的本质就是getter、setter方法的组合。至于getter、setter方法到底执行哪些代码,什么时候执行,则完全由程序决定。原创 2017-05-27 22:49:49 · 377 阅读 · 0 评论 -
每天学一点Swift----面向对象上(四)
七.存储属性 1. 存储属性指的是存储在类、结构体里的变量或常量。 2. Swift中定义存储属性的语法与定义变量或常量的语法基本基本相同。 3. Swift的存储属性又可以分为实例存储属性和类型存储属性。其中,实例存储属性是属于单个的实例;而类型存储属性则属于类型本身。 4.枚举不能定义实例存储属性,只有类和结构体才能定义实例存储属性;枚原创 2017-05-26 21:54:00 · 583 阅读 · 0 评论 -
每天学一点Swift——Swift的基本数据类型(一)
一. Swift语言是一门强类型的语言。强类型包含了两方面的含义:(1).所有的变量都必须先声明后使用;(2). 指定类型的变量只能接受类型与之匹配的值。二.注释 1. 单行注释: // 2. 多行注释: /* xxxxx */ 3. 在Swift中有一个与编程语言不同的地方就是,多行注释可以嵌套使用。三.分原创 2017-05-08 23:03:45 · 1142 阅读 · 0 评论 -
每天学一点Swift——Swift简介以及Xcode入门使用
一. Swift语言简介Swift简洁但是不简单。Swift并不是弱类型的语言。Swift并不是一种脚本语言。Swift和Object-C各有轻重。二.下载和安装Xcode安装Xcode有两个方法:一是在浏览器中登陆https://developer.apple.com进行下载,另一种是通过App Store进行下载并安装。这里是按照第二种方法进行安装的,个人原创 2017-05-08 00:05:49 · 3368 阅读 · 0 评论