Swift 是一种新的编程语言,用于编写 iOS 和 OS X 应用。Swift 结合了 C 和 Objective-C 的优点并且不受C兼容性的限制。Swift 采用安全的编程模式并添加了很多新特性,这将使编程更简单,更灵活,也更有趣。Swift 是基于成熟而且倍受喜爱得 Cocoa 和 Cocoa Touch 框架,他的降临将重新定义软件开发。
Swift 的开发从很久之前就开始了。为了给 Swift 打好基础,苹果公司改进了编译器,调试器和框架结构。我们使用自动引用计数(Automatic Reference Counting, ARC)来简化内存管理。我们在 Foundation 和 Cocoa的基础上构建框架栈并将其标准化。Objective-C 本身支持块、集合语法和模块,所以框架可以轻松支持现代编程语言技术。正是得益于这些基础工作,我们现在才能发布这样一个用于未来苹果软件开发的新语言。
Objective-C 开发者对 Swift 并不会感到陌生。它采用了 Objective-C 的命名参数以及动态对象模型,可以无缝对接到现有的 Cocoa 框架,并且可以兼容 Objective-C 代码。在此基础之上,Swift 还有许多新特性并且支持过程式编程和面向对象编程。
swfit和OC间的 联系
swift句尾不需要分号 ,除非你想在一行中写三行代码就加分号隔开。
swift不要写main函数 ,程序默认从上往下执行
swift不分.h和.m文件 ,一个类只有.swift一个文件
swift不在有地址的概念
swift数据类型都会自动判断 , 只区分变量var 和常量let
强制转换格式反过来了 OC强转:(int)a Swift强转:int(a)
整数的数据类型可以通过 .min和.max获得最大和最小值
定义类型的别名语法改变
OC:typedef int MyInt
Swift:typealias MyInt = intswift的模除取余运算符支持小数了 。 如 5%1.5 = 0.5
关于BOOL类型更加严格 ,Swift不再是OC的非0就是真,而是true才是真false才是假
与第10点相联系的就是, swift的赋值运算符没有返回值 。防止误用“=”和“==”
swift可以多对多赋值 。 let(x,y) = (1,2)
swift的 循环语句中必须加{} 就算只有一行代码也必须要加
swift的switch语句后面以前只能跟整数, 现在可以跟各种数据类型了 ,如浮点字符串都行,并且里面不用写break,如果不想要没break的效果 即后面的都想执行 那就写上关键字 fallthrough(注意:在fallthrough后面就不能再定义常量变量了)
1、初始化UIView的子类
在iOS应用上实现UI就需要子类化UIView,也就是要重写UIView的init方法。注意:两种语言有所区别。
Objective-C只需在UIView子类中重写必要的init方法。要初始化一个UIView框架,就要重写initWithFrame:框架,如下所示:
@implementation SubUIView
- (id) initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self != nil) {
// ...
}
return self;
}
@end
然而Swift需要多一些步骤来重写同一个init方法。首先,重写使用CGRect框架作为其参数的init方法。根据UIView文档,用Swift语言构建时,须重写init( coder: ),但我们不需要这种方法,就用如下代码处理。类属性初始化所需的代码可以在init( frame: )中执行。
class SubUIView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
// ...
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
2、初始化UIViewController的子类
子类化UIViewController是iOS开发的重要步骤。使用Interface Builder的开发者需要重写initWithNibName:bundle:,但既然我们用代码来构建UI,就不需要执行这一方法了。只需重写init方法,在其中初始化类属性即可。
@implementation SubUIViewController
- (id) init
{
self = [super init];
if (self !=