美文网首页
swift研究-1

swift研究-1

作者: Q了个L | 来源:发表于2016-01-09 01:26 被阅读27次

挺辛苦的一天。

昨天晚上回家,不知道抽哪门子风,买了一大桶可乐,喝了不少。半夜躺在床上一直睡不着,翻来覆去想各种奇怪的事情,最后终于在早上5点睡着。早上8点半又起来抢火车票,好消息是抢到了。

白天很忙,一直在写一个数据统计的脚本,用python+sql最终实现的。现在想来,还是觉得python的语法最舒服,很多东西很简洁。

今天swift学的还算不错,中午看了30来分钟,下午又看了1个多小时。很平稳的推进过程。

笔记如下:

1 关联类型。

在类型不确定的情况下,需要声明一个或多个关联类型。相当于一个占位名。作为关联类型在协议被实现之前是不需要指定的。关键字:typealias

protocol Container {

   typealias ItemType

   mutating func append(item: ItemType)

   var count: Int { get }

   subscript(index: Int) -> ItemType { get }

}

struct IntContainer: Container {

   var data = [T]()

   typealias ItemType = T //遵循协议实现类型, 这行可以注释掉,因为swift的类型推断

   var count: Int {

       return data.count

   }

   mutating func append(item: T) {

       data.append(item)

   }

   subscript(index: Int) -> T {

       return data[index]

   }

}

如果一个已有的类已满足协议所有的功能,比如Array就满足Container的所有要求,可以简单的直接声明Array遵循该协议:

extension Array: Container{}

2 where语句类型约束。对于关联类型定义约束是非常有用的。可以使用where语句来定义参数的约束。

func allItemsMatch

   where C1.ItemType  == C2.ItemType, C1.ItemType: Equatable>

   (leftContainer: C1, rightContainer: C2) -> Bool {

   var res = true

   if leftContainer.count != rightContainer.count {

       res = false

   } else {

       for i in 0..

           if leftContainer[i] != rightContainer[i] {

               res = false

               break

           }

       }

   }

   return res

}

3 访问级别。swift提供了三种访问级别,public,internal,private,基本类似于java的public,包访问权限,private。

默认访问权限为internal。

当开发Framework时,需要把一些实体定义为public级别,这些被定义为public的实体,就是这个Framework的API。

类的访问级别也会影响到类成员(属性,函数,初始化方法)的默认访问级别。如果类声明为private,那么该类所有的成员的默认访问级别也是private。如果将类声明为public或internal或是不明确的指定访问级别,那么该类的所有成员的访问级别是internal。

注意:public类的默认访问权限是internal而不是public,如果想将某个成员声明为public,必须明确使用修饰符public。

public class SomePublicClass { //显式的public类

   public var somePublicProperty = 0 //显式的public成员

   var someInternalProperty = 0 //隐式的internal成员

   private func somePrivateMethod() {} //显式的private成员

}

class SomeInternalClass { //隐式的internal类

   var someInternalProperty = 0 //隐式的internal成员

   private var somePrivateProperty = 0 //显示的private成员

}

private class SomePrivateClass { //显式的private类

   var somePrivateProperty = 0 //隐式的private成员

   private func somePrivateMethod() {} //显式的private成员

}

相关文章

  • swift研究-1

    挺辛苦的一天。 昨天晚上回家,不知道抽哪门子风,买了一大桶可乐,喝了不少。半夜躺在床上一直睡不着,翻来覆去想各种奇...

  • swift之tableView

    抽空继续研究swift,本文简单介绍用swift创建tableView,大神请无视?代码如下

  • Swift函数调用逆向分析

    简介: ##逆向分析Swift代码 为了研究Swift的动态性,我们将Swift的类、成员变量、函数调用等代码进行...

  • 关于swift几行代码就需要几分钟编译问题

    1.最近在学习swift语言,发现,编译过程慢的蜗牛,后来研究了一下原理,我在swift写一个新的UIViewCo...

  • OC引入Swift,混编

    一、OC中引入Swift 最近在研究swift时候,需要实现OC与Swift混编,因此总结了以下几个步骤实现OC中...

  • Swift中的方法名的那点事

    前言 作为swift初学者,刚开始研究swift,在此做一个简单的总结分享,如果有错误请指正哈 1.没有参数方法名...

  • No visible @interface for 'X

    今天研究了一下Swift和OC混编,在OC文件中调用Swift方法时候报错: 解决方法 因为Swift提供给OC的...

  • [Codility] Lession 3.3 PermMissi

    Swift Solution 1: Swift Solution 2: Swift Solution 3:

  • 整理swift常用的第三方框架

    这段时间开始研究swift,打算在下个项目上手swift特此整理的常常转载的一些swift常用的第三方的框架。

  • swift和OC之间的对决

    最近在找工作发现越来越多的公司开始使用swift,幸亏自己业余时间研究了一下swift,面试的时候问起swift不...

网友评论

      本文标题:swift研究-1

      本文链接:https://www.haomeiwen.com/subject/jnxqkttx.html