##好记性不如烂笔头

学习swift 原英文版本

学习swift 翻译中文版

swift数据类型与oc比较

###进入 退出swift

goswift > swift

//退出
goswift > ctr+z

###第一个关键字guard

就是守护。guard语句判断其后的表达式布尔值为false时,才会执行之后代码块里的代码,如果为true,则跳过整个guard语句
guard后面必须跟else语句

###inout

在参数前面用inout修饰,在函数内部实现改变外部参数
//调用的时候
swapTwoInts(&one,two: &two)
定义的时候
func swapTwoInts(inout one:Int,inout two:Int) {
     let temp = one
     one = two
     two = temp
}

###uNowned

避免循环引用,使用uNowned修饰( let uNowned)
weak仅能修饰变量,不能修饰常量( var weak)

###lazy

懒加载,修饰闭包

OC的lazy加载是重写属性的get方法
swift的lazy是只执行一次

###willSet didSet get set

willSet 添加观察属性变化 类似kvo里面的addobserver
didSet 检查属性已经变化

###mutating

用在struct和enum中的函数前面,作用是可以修改struct,enum和protocal中的属性值

struct SRectangle {
  var width = 200
}

extention SRectangle {
    
mutating func varifyWidth(num:Int) {}
}

###Subscripts Closures

下标的关键词 subscript
闭包的关键词 in
swift中所有闭包默认@noescape,延迟操作,网络延迟需要@escape.
@autoclosure可以将一句话封装成闭包

###typealias

别名 typealias unitype = Int

常见应用 typealias bigProtocal = protocal<BigProtocal,CigProtocal>

###defer

1.延缓执行
2.多个defer的情况,像栈一样,后进先出,从下往上执行

###throws throw

throws 来声明异常,throw 来抛出异常

###do-catch

异常处理,注意不是try catch!

func functionWillThrowError() throws {
    //实现
}

do {
    throw functionWillThrowError()
}catch MyError.NotExist{

}catch MyError. OutOfRange{

}

###repeat

repeat是循环重复,是do-while的替身
repeat {

}while <#条件#>

###func 参数_

请注意定义方法有什么不同
var a=3,b=6
func swapValue(inout a:Int,inout b:Int){}
方法调用 swapValue(&a,b:&b)
func swapValue(inout a:Int,inout _ b:Int){}
方法调用 swapValue(&a,&b)
注意参数添加_ 有一定的不同

函数还可以作为一种类型
var mathFunc :(inout Int,inout Int)->() = swapValue

###extention

extension Int {
    subscript(digitIndex: Int) -> Int {
        var decimalBase = 1
        for _ in 0..<digitIndex {
            decimalBase *= 10
        }
        return (self / decimalBase) % 10
    }
}

746381295[0]//5

###value && reference type

值类型 和 引用类型
值类型(Value Types):每个实例都保留了一分独有的数据拷贝。如结构体 (struct)、枚举(enum) 和元组(tuple)
引用类型(Reference Type):每个实例共享同一份数据来源,如类(class)

// 下面是一个值类型的例子
struct MyStruct { var data = -1 }
var s1 = MyStruct()
var s2 = s1                           // s2是s1的拷贝
s1.data = 42                         // 值类型,改变s1的值,s2不受影响
println("\(s1.data),\(s2.data)")     // 输出结果 "42,-1"
//值类型: 复制的时候,相当于创造了一个完全独立的实例,这个实例保有属于自己的独有数据,
数据不会受到其他实例的数据变化影响

// 下面是一个引用类型的例子
class MyClass { var data: Int = -1 }
var x = MyClass()
var y = x                           // y是x的拷贝
x.data = 42                         // 引用类型,更改x的值,等于同时修改了y
println("\(x.data),\(y.data)")     // 输出结果 "42,42"
//引用类型: 复制的时候,实际上是创造了一个共享的实例分身,两者是共用一套数据(数据存储的地址指向同一块内存)。
因此修改其中任何一个实例的数据,也会影响到另外一个

###is as

is 是类型检查
var movieCount = 0
var songCount = 0
 
for item in library {
    if item is Movie {
        movieCount += 1
    } else if item is Song {
        songCount += 1
    }
}
as 是类型转化 as!,as?
for item in library {
    if let movie = item as? Movie {
        print("Movie: \(movie.name),dir. \(movie.director)")
    } else if let song = item as? Song {
        print("Song: \(song.name),by \(song.artist)")
    }
}

###map flatMap filter reduce

Swift提供了map、filter、reduce这三个高阶函数作为对容器的支持

###struct 和 class 区别

  • struct是value type,class 是reference type. struct 直接跟变量赋值,class不能
  • struct赋值给另外一个struct,值不变,但是class要变
  • struct赋值给let,则里面不属性不能修改,class则可以修改属性值
  • extention struct 添加新funcs时需要添加mutating修饰,class不用添加修饰
  • struct 没有继承,class有继承

###IBDesignable 和 IBInspectable

在Swift里,@IBDesignable关键字写在class前即可。 
在OC里,是IB_DESIGNABLE这个关键字,写在@implementation前即可 
IBInspectable 

在swift里,@IBInspectable关键字写在需要显示的变量前即可 
在OC里,是IBInspectable这个关键字,写在需要显示的变量前即可

更多信息,点击> http://www.jb51.cc/article/p-flhwlmmn-bod.html

【swift 关键词】让我们牢记swift中的一些关键字用途的更多相关文章

  1. ios – 如何从Swift中的Closure返回值?

    ).更改实现以使用存储调用值的成员变量.

  2. ios – 如何正确地将选择器作为参数传递给swift

    最后说我有一个包含B的实例的A类.在A类中,我将一个A作为选择器的函数传递给B的一个方法.B使用这个选择器注册通知.但是,当通知进入时,它无法运行选择器并显示“无法识别的选择器发送到实例”.如果我把所有我想在B班做的事情都移到A班,那就行了.不过,我希望他们分开,好像更有条理.我对Objective-C和Swift来说相当新鲜,所以在这种情况下,我不知道如何传递选择器作为参数.斯威夫特答案会很棒.

  3. xcode – Swift闭包:不能将类型'(_) – &gt; Bool’的值转换为预期的参数类型

    注意:使用Xcode7.3.1解决方法一些闪闪发光的东西正在用Swift的类型推断.给卡一个明确的类型,它将工作.您不需要返回类型或返回:注意:这也是:完全指定.Red枚举值也解决了这个问题:在评论中提到,如果您将卡的定义移动到与过滤器相同的文件中,那么它的工作原理.实际上,如果您将CardType枚举从Card中分离出来,只需将CardType移动到带有过滤器的文件中即可.

  4. ios – @IBInspectable何时设置?

    我有几个属性设置为@IBInspectable,所以我可以在InterfaceBuilder中编辑它们,但在运行时这些属性设置?我在init中尝试使用它们,但是还没有设置它们.这是我正在努力做的.但是我甚至不能将TimerInit移动到TimerViewInit,因为@IBInspectable变量在init被调用之前没有设置.解决方法像IB中的任何设置一样,当xib文件被加载时,它将被设置.你想在awakeFromNib()中设置你的计时器

  5. ios – Swift – 如何在UITableview中获取所选行的数值

    我在Swift中创建的UITableview上有多个选择,我声明了一个包含所选UITableViewCells的NSIndexPaths的Array.如何将此数组转换为可读术语.例如self.selectedRows是NSloglike:选定项目字符串[{length=2,path=0–1},{length=2,path=0–0},path=0–3}]我希望能够将其转换为:1,2,3.在ObjectiveC中,我通过数组枚举了ObjectsWithOptions,并将数组的id添加到一个可变数组中以获得我

  6. ios – 如何在Swift中使用indicesOfObjectsPassingTest:

    我发现它很混乱,当我第一次在objective-c中学习块时,你如何从声明转换为实际使用方法,而Swift的语法至少是令人困惑的.解决方法这段代码在我的游乐场工作;)希望它有点帮助额外功能定义直列关闭我将上面的示例转换为内联闭包.参数列表和返回类型由术语in分隔.

  7. Swift基础语法汇总

  8. IBInspectable / IBDesignable 只能用于Swift?

    .CGColor}}标有@IBInspectable,他们就可以很容易在InterfaceBuilder的观察面板里编辑。IBDesignable如果这还不够,IBDesignable自定义视图也在Xcode6中亮相了。标记一个自定义视图为IBDesignable,只需在类名前加上@IBDesignable的前缀。加上IBInspectable属性,一个设计师或开发人员可以轻松地调整自定义控件的呈现,以得到她想要的确切的结果。TARGET_INTERFACE_BUILDER//thiscodewillru

  9. Swift 学习一

    国外开发者最近发现,WWDC2014上苹果发布的新语言Swift,和古老的Scala语言在语法上存在众多的相似之处。Swift语言从语法上来看,几乎是Scala的一个分支,在以下功能上几乎是等同的:类型继承、闭包、元组、协议、扩展、泛型等。不过Swift的运行环境和Scala的区别还是很大,这个概念才是Swift最重要的。但Swift最终编译到机器代码,使用引用计数机制,与Objective-C无缝整合。所以Swift和Scala在代码表象上的相似,应该并不太影响两种语言本质机理上的重大不一致。

  10. Swift基础语法: 23 - Swift的Trailing闭包, 捕获, 闭包是引用类型

    其使用求余运算符计算最后一位数字并利用digitNames字典获取所映射的字符串.2.字典digitNames下标后跟着一个叹号(!

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部