初始Swift


Swift在2014开发者大会上提出后。几乎每年都会更新维护,现在已经更新到2.0.
第一次使用swift。边学swift,边做一些笔记分析。希望能快速入门这门新语言吧~

Swift语言特点

作为一项苹果独立发布的支持型开发语言,Swift语言的语法内容混合了Objective-C、JS、Python,语法简单、使用方便、易学,大大降低了开发者入门的门槛。同时swift语言可以与Objective-C混合使用,对于用惯了高难度Objective C语言的程序猿来说,学会这个,更不在话下!


使用条件
Xcode版本>=6.0
Mac系统版本>=10.9.3

1.常量和变量

let 和 val 声明一个常量和变量。

2.OC和Swift混编,头文件导入
当在swift系统文件中创建object文件时,需要导入object-C文件才可以使用oc类中的方法。
当创建的时候,会提醒是否创建桥接。选择时,即可
如图:将oc头文件放进去。


桥接Swift.png

swift与OC语法对比分析
3.swift 控件的创建

// 一个完整的btn
           let SwiftBtn =  UIButton ()
        SwiftBtn.frame = CGRectMake(0, 0, 100 ,100)
        SwiftBtn.setTitle("Swift大法好", forState: UIControlState.Normal)
        SwiftBtn.setTitleColor(UIColor .blackColor(), forState: UIControlState.Normal)
        SwiftBtn.backgroundColor = UIColor .redColor()
        SwiftBtn .addTarget(self, action: #selector(ViewController.ClickBtnSelect), forControlEvents: UIControlEvents.TouchUpInside)
        self.view .addSubview(SwiftBtn)

// 执行点击事件
 func ClickBtnSelect()  {
        NSLog("点击了按钮")
        print("点击了按钮")
        
    }

4.控件的懒加载

  // 懒加载
    let LazyBtn = UIButton()
    LazyBtn.frame = CGRectMake(120, 0, 100, 100)
    LazyBtn.setTitle("Swift懒加载", forState: UIControlState.Normal)
    LazyBtn.setTitleColor(UIColor .blackColor(), forState: UIControlState.Normal)
    LazyBtn.backgroundColor = UIColor .redColor()
    return LazyBtn
    }()

 // 调用部分
  self.view .addSubview(LazyBtn)

综上:Swift真是一个自上而下,简洁,易学的代码。。

开始试着找一款APP模仿着学习吧。
我模仿的是维尼的小熊#小日子#,因为搜到了Swift源码。

5.访问控制的认识
苹果在发布了Xcode 6 Bate 4后为Swift添加了新的特性–访问控制(Access Control) 并为此写了文档“The Swift Programming Language
具体内容来源
什么是访问控制:
访问控制可以限定你在源文件或模块中访问代码的级别,限定哪些代码允许被访问,哪些代码不允许被访问。
适用范围:
整个项目。

You can assign specific access levels to individual types (classes, structures, and enumerations), as well as to properties, methods, initializers, and subscripts belonging to those types. Protocols can be restricted to a certain context, as can global constants, variables, and functions.
可以明确的给类、结构体、枚举、设置访问级别,也可以给属性、函数、初始化方法、基本类型、下标索引等设置访问级别。协议也可以被限定在一定的范围内使用,包括协议里的全局常量、变量和函数。

名词解释:模块和源文件

Modules and Source Files
Swift’s access control model is based on the concept of modules and source files.
A module is a single unit of code distribution—a framework or application that is built and shipped as a single unit and that can be imported by another module with Swift’simport
keyword.
Each build target (such as an app bundle or framework) in Xcode is treated as a separate module in Swift. If you group together aspects of your app’s code as a stand-alone framework—perhaps to encapsulate and reuse that code across multiple applications—then everything you define within that framework will be part of a separate module when it is imported and used within an app, or when it is used within another framework.
A source file is a single Swift source code file within a module (in effect, a single file within an app or framework). Although it is common to define individual types in separate source files, a single source file can contain definitions for multiple types, functions, and so on.
Swift中的访问控制模型基于模块和源文件这两个概念。
模块指的是Framework或App bundle。在Swift中,可以用import关键字引入自己的工程。
在Swift中,Frameword或App bundle被作为模块处理。如果你是为了实现某个通用的功能,或者是为了封装一些常用方法而将代码打包成Framework,这个Framework在Swift中就被称为模块。不论它被引入到某个App工程或者其他的Framework,它里面的一切(属性、函数等)都属于这个模块。
源文件指的是Swift中的Swift File,就是编写Swift代码的文件,它通常属于一个模块。通常一个源文件包含一个类,在类中又包含函数、属性等类型。

访问级别
<font color=red>内容</font>
Access Levels
Swift provides three different access levels for entities within your code. These access levels are relative to the source file in which an entity is defined, and also relative to the module that source file belongs to.
Public access enables entities to be used within any source file from their defining module, and also in a source file from another module that imports the defining module. You typically use public access when specifying the public interface to a framework.
Internal access enables entities to be used within any source file from their defining module, but not in any source file outside of that module. You typically use internal access when defining an app’s or a framework’s internal structure.
Private access restricts the use of an entity to its own defining source file. Use private access to hide the implementation details of a specific piece of functionality.
Swift提供了三种不同的访问级别。这些访问级别相对于源文件中定义的实体,同时也相对于这些源文件所属的模块。
Public:可以访问自己模块或应用中源文件里的任何实体,别人也可以访问引入该模块中源文件里的所有实体。通常情况下,某个接口或Framework是可以被任何人使用时,你可以将其设置为public级别。
Internal:可以访问自己模块或应用中源文件里的任何实体,但是别人不能访问该模块中源文件里的实体。通常情况下,某个接口或Framework作为内部结构使用时,你可以将其设置为internal级别。
Private:只能在当前源文件中使用的实体,称为私有实体。使用private级别,可以用作隐藏某些功能的实现细节。
Public为最高级访问级别,Private为最低级访问级别。

  1. Swift语言的改变
    “确保转换”和“可失败转换”的概念现在被分为两个操作符。可失败转换现在使用as!运算符,这个!感叹号可以让代码的读者更清晰的明白本次转换可能失败并触发一个运行时错误。“as”操作符会保持向上转换(比如“someDerivedValue转换为Base”)或者类型标注(“0 转换为Int8”),它保证了转换不会失败。
    结构体和类构造器中的let不可变属性现在被规范为更加标准的通用模型:lets类型初始化后将永不会被改变或重新赋值。以前的实现是,可以在构造器中任意修改,而现在它们只允许被初始化和提供值操作。如果一个属性在声明时已经赋值,那么它会被所有的构造器认为已经含有初始值。
    从桥接Objective-C类 (NSString/NSArray/NSDictionary)到它Swift中值类型的隐式转化被移除。这将是Swift的类型系统更加简单和可预测。这意味着:
import Foundation  
func log(s: String) { println(x) }  
let ns: NSString = 
"some NSString"
 // Okay  
log(ns) 
// 错误  
// "'NSString' 不能转换为 'String'"
为了完成桥接转换,需要用显式转化符标注:
log(ns as String) 
// succeeds
从Swift类型到Objective-C类型的桥接隐式转换依然被允许,比如:
func nsLog(ns: NSString) { println(ns) }  
let s: String = “some String”  
nsLog(s) 
// okay: implicit conversion from String to NSString is still permitted

6.自定义Tabber

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容

  • Chapters: Enumerations - Advanced Operators Excerpt From:...
    碧波浮沉阅读 655评论 0 1
  • 一颗想去看世界的心从八月一直等到十一月,说走就走的冲劲不是时时都有。很庆幸选择了杭州,遇见一座城,从一个故事开始。...
    望凉月阅读 281评论 2 3
  • 一如既往,秋高气爽 世界干净的如同天堂 就连,卑微的生活都带着使命 和归宿 金黄金黄 瓦蓝瓦蓝 是不是要做点儿什么...
    西诗人生阅读 318评论 0 2
  • 圣诞夜,念恩师。晚上加班加点终于赶完了新接手竞价账户的完善工作,尽管已经是第N次搭账户了,可每一次的感受都不尽相同...
    墨墨涨知识阅读 534评论 0 50
  • WebSocket(实现持久连接) http://www.runoob.com/html/html5-websoc...
    WMLJS阅读 2,691评论 0 0