欢迎来到 IT实训基地-南通科迅教育
咨询电话:0513-81107100
iOS 从Objective-C到Swift
2016/12/5
科迅教育
354
南通IT培训学校怎么样

前言: 博主功力有限, 也是在学习的过程中, 之前写了几篇在iOS开发中使用Swift进行开发偏向于UI方向的文章, 明显地感觉到OC与Swift的之间的一些区别与联系, 并且还有一些值得注意的地方, 希望看到这篇文章的小伙伴更快地上手Swift. , 最近自己的状态也是很糟糕, 更糟糕的是感冒了(囧~). 有什么错误请评论指出, 谢谢.

一 属性

OC中 我们最常用的property
?
1
2
// 常常会这样写
@property(nonatomic, copy) NSString *name;
Swift中似乎更简单了: 常常这样说变量(var) | 常量(let), 示例代码如下, 我定义一个name变量赋值为Summer
?
1
2
3
<code>classViewController: UIViewController {
    var name ="Summer"
}</code>

所需要注意的: 似乎Swift中并没有属性修饰(strong,weak等。)
1.1 strong在Swift中是默认的
1.2 weak: 通过weak关键词声明

?
1
<code>weak var btn = UIButton()</code>

二 控制流

if 不需要使用 () 来包裹条件了, 示例代码如下
?
1
2
3
4
<code><code>        let a =10
        ifa <5{
            // code
        }</code></code>

这里所需要注意的: 条件必须为 Boolean表达式

?
1
2
3
4
5
<code><code>       // 所以这样写, 是错误的
        let b =10
        ifb {
            //
        }</code></code>
for Swift为其添加了范围操作符 … 与 ..<
?
1
2
3
4
5
6
7
<code><code><code>fori in1...5{
            print(i)// 1 2 3 4 5
        }
// 同时支持自定义步长
forj in0.stride(through:10, by:2) {
            print(j)// 0 2 4 6 8 10
        }</code></code></code>
Switch 当然在swift中switch也有很大的提升
1.1 不需要强制加上 break
1.2 在OC中switch支持int和char类型作为匹配 而在swift中得到了很大的提升(可以对 浮点型, 字符串进行匹配了)
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<code><code><code><code><code>       // 方便了很多
        let des ="summer"
        switchdes{
        case"summer":
            print("夏天然后--- \("帅哥")")
        case"1":
            print("不知道什么鬼")
        case"2":
            print("不知道什么鬼")
        case"3":
            print("不知道什么鬼")
        default:
            print("default")
        }</code></code></code></code></code>

三 函数(方法)

OC中 有实例方法和类方法
?
1
2
3
<code><code><code><code><code>// 比如这样, 写了一个没有返回值没有参数的函数
- (void)print
+ (NSString *)returnStr</code></code></code></code></code>
Swift中基本都是类似的, 看示例代码感受一下
?
1
2
3
4
5
<code><code><code><code><code>// func 关键字定义函数
// class 类方法修饰
// 返回值在 -> 之后 例子中就是没有返回值
func printf() ->Void
classfunc returnStr() ->String</code></code></code></code></code>

四 初始化

?
1
<code><code><code><code><code>var btn = UIButton()// 这样就可以了</code></code></code></code></code>

值得注意的是: Swift为我们处理了alloc的过程, 而init有一些需要注意的地方
- Swift 都必须在对象被创建出来前设置好。也就是我们必须在init方法中赋好值,或是直接给属性提供一个默认值。

五 Swift如何检查delegate 是否为nil

?
1
2
3
4
5
6
7
<code><code><code><code><code>// OC 中我们会这样写
if(self.dataSource && [self.dataSource respondsToSelector:@selector(titleForSegmentAtIndex:)]) {
        thisSegmentTitle = [self.dataSource titleForSegmentAtIndex:index];
    }
// Swift中非常简洁, 示例如下
iflet thisSementTitle = dataSource?.titleFroSegmentAtIndex?(index){
}</code></code></code></code></code>
77
关闭
先学习,后交费申请表
每期5位名额
在线咨询
免费电话
QQ联系
先学习,后交费
TOP
您好,您想咨询哪门课程呢?
关于我们
机构简介
官方资讯
地理位置
联系我们
0513-91107100
周一至周六     8:30-21:00
微信扫我送教程
手机端访问
南通科迅教育信息咨询有限公司     苏ICP备15009282号     联系地址:江苏省南通市人民中路23-6号新亚大厦三楼             法律顾问:江苏瑞慈律师事务所     Copyright 2008-