- 博客(12)
- 资源 (4)
- 收藏
- 关注
原创 Swift入门(十二)——利用Extension添加逆序输出字符串方法
Swift好像没有自带逆序输出字符串的方法,于是决定通过拓展(Extension)给String类添加一个逆序输出字符串的reverse方法。首先新建一个Swift文件,命名规则不太清楚,于是暂且模仿OC叫做String+Operation吧,然后实现我们需要拓展的方法。下面先贴上代码,然后解释一下这段代码。//String+Operation.swifftimport Foundation//逆
2015-08-30 23:58:53 3327 1
原创 Swift入门(十一)——类型转换与is、as操作
三种操作:is、as?和as!Swift是强类型语言,但也允许开发者通过is、as?和as!这三种操作来对类型进行判断和强制转换。其中is用作类型判断,而as?和as!则分别是类型转换的可选形式和强制形式。在这里强调一下,swift中比较常用的向下转换(downcast)是没有as操作符的。为了方便后面的解释,这里假设定义了三个类,Fruit、Apple和Orange,其中Apple和Orange都
2015-08-29 00:45:02 3662 1
原创 彻底搞懂OC中GCD导致死锁的原因和解决方案
GCD提供了功能强大的任务和队列控制功能,相比于NSOperationQueue更加底层,因此如果不注意也会导致死锁。所谓死锁,通常指有两个线程A和B都卡住了,并等待对方完成某些操作。A不能完成是因为它在等待B完成。但B也不能完成,因为它在等待A完成。于是大家都完不成,就导致了死锁(DeadLock)。有一定GCD使用经验的新手通常认为,死锁是很高端的操作系统层面的问题,离我很远,一般不会遇上。其实
2015-08-27 23:56:26 19669 6
原创 Swift入门(十)——循环引用、弱引用和无主引用
最近看到swift里面不仅有循环引用和弱引用(weak),还添加了无主引用(unowned),于是写了一些demo,这里总结一下。和OC一样,Swfit默认也是基于ARC进行内存管理的,因此虽然简单,但如果不注意任然会出现循环引用问题(Retain cycle),导致内存泄露。在OC中,可以很简单的举出一个循环引用的例子。比如有两个类A和B,A中有一个属性是B类的实例,而B中又有一个属性是A类的实例
2015-08-23 00:12:34 7056
原创 Xcode6下iOS单元测试——XCTest和GHUnit框架简介和比较
iOS单元测试(UnitTest)在iOS中进行测试可以选择XCTest和GHUnit测试两种框架。XCTest集成在Xcode中,而GHUnit则是一个著名的开源框架。所谓的单元测试,就是指把程序分割成若干个小单元,对每个小单元单独进行测试。所谓的小单元,可以是一个方法,一个UI控件,一次简单的事件等等。本文不重点讨论测试的意义,所以就选择最简单的加法函数,介绍iOS如何进行单元测试。XCTest
2015-08-21 01:15:25 3275
原创 Swift入门(九)——String与Int、Double、Float等数字相互转换
三种转换模式任何语言里面,Int、float、double等数字类型自成一派,但它们和String类型之间的转换总是不太方便,这里总结一下它们相互转换的方法。总结下来一共有三种转换模式,分别举例说明。一、String转数字这里以String类型转Int类型为例。String转其他的数字类型(Float、Double等)大同小异。主要用到的方法是String类型的toInt方法。注意这个方法返回的是I
2015-08-14 00:20:43 66614 3
原创 实习小结——UIBarButtonItem和UINavigationBar的坑
这一周做了很多UI方面的东西,遇到的坑主要集中在UIBarButtonItem和UINavigationBar,记录一下备查。UIBarButtonItem自定义位置直接用系统默认的方式生成按钮是无法选择位置的,甚至连这个按钮的默认位置都不清楚。如果想要自定义按钮的位置,有两种选择。一、直接修改系统生成的按钮。可以通过UIBarButtonItem的imageInsets属性,修改图片的位置,从而间
2015-08-09 11:17:18 3297 1
原创 Swift在for循环中报错'++' is not a binary operator
最近刚开始学swift,遇到了一个非常诡异的问题。是在写for循环的时候出现语法错误。代码如下:for var i = 0; i < 10; i++{ println("hello world") }按理说这是Swift里最简单的for循环的使用了。但是编译器还是报了两个错:‘++ is not a binary operator’Operator is not a known bina
2015-08-08 23:27:19 3978
原创 Swift入门(八)——功能强大的求余运算符
求余运算符在大部分语言中,%都是求余运算符。其功能非常简单,不过也只支持int类型正数之间的求余。 比如 10 % 3 = 1。严格来说,正整数之间的求余的定义如下: 对于任意a,b∈N*,定义m = a % b,其中m满足: a = b * m + r且0 <= r < bSwift中的求余使用场景拓展Swift中的求余,不再是两个int类型正数之间的运算符了。不仅负数可以求余,浮点数
2015-08-06 00:12:12 7264
原创 Swift入门(七)——结构体(Struct)
引子之前我们在用Int,String等类型的时候,可能没有仔细研究过,其实这些基本类型与C或者Java不一样,不是严格的“基本类型”,他们其实是经过封装的结构体。按住Alt键点击Int类型后,可以看到Int结构体的完整定义/// A 64-bit signed integer value/// type.struct Int : SignedIntegerType { var value
2015-08-03 23:58:14 6077
原创 Swift入门(六)——字典(Dictionary)
字典的定义和上一篇文章讲到的数组类似,字典也是用来存放相同数据类型的元素的数据结构。不过字典是通过键(Key)来查找特定的值(Value),字典中存放的每一个数据项(item)都是这样的一个键值对。哈希化每一个键值对的值,没有特殊要求,但是只有可以哈希化的类型的变量,才可以作为键值对的键。可以哈希化是指,该类型的变量,必须提供一个可以计算出自身哈希值的方法。哈希值不相同的变量,自身一定也不相同,反之
2015-08-02 16:18:46 5346
原创 Swift入门(五)——数组(Array)
集合集合的定义Swift中提供了两种数据结构用于存放数据的集合,分别是数组(Array)和字典(Dictionary)。他们的主要区别在于数组中的元素由下标确定,而字典中的数据的值由数据的键(Key)决定。以下我们认为集合就是数组或字典。集合的可变性我们可以定义一个集合常量或者集合变量。一旦定义为常量,就意味着集合的长度、内容和顺序都不能再修改了。比如,定义为常量的数组,不能再向其中添加新的元素。数
2015-08-01 21:59:39 5887
Reveal 1.6.2破解版
2015-11-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人