1、在objective-c中,我们必须将所要用的标头档在一个.h档中import它,并在.h档中宣告全域变数或是storyboard新增的元件,然后在.m档中import这个.h档,如此一来才能在.m中使用刚刚在.h宣告的变数以及其标头档所包含的function,但在swift中我们只需要一个档案去控制一个view,而会参考到的标头档以及所用到的全域变数则全部放在这个档案中。
、swift不用分号来区隔两行code,除非两行code写在同一行
a=b+cx=y/z
a=b+c;x=y/z
3、swift没有指标,因为指标可以直接存取记忆体,swift注重安全性,避免非法记忆体存取造成crash,所以并没有指标
4、在swift当中,宣告变数用var,宣告常数用let范例程式5、在swift当中用printfln来显示字串,objective-c则使用NSLog范例程式objective-c:
inta=5;NSLog(
"a=%i",a);swift:
vara:Int=5printfln("\(a)")
以上两段程式码做的是同样的事将Int型态的变数a以string的形式显示出来swift用一个"()",括弧内放欲显示的变数
6、swift和objective-c在宣告变数常数上的不同
objective-c:
UITableView*myTableView=[[UITableViewalloc]initWithFrame:CGRectZerostyle:UITableViewStyleGrouped];
swift:
letmyTableView:UITableView=UITableView(frame:CGRectZero,style:.Grouped)
swift在设定某物件的属性时几乎不用中括弧[]
以上两段程式码做的是同样的事宣告一个资料型态为UITableView的常数myTableView,并给予他初值
7、swift和objective-c在定义function上的不同(范例专案Kotel中的HttpController.swift)
objective-c:
-(NSDate*)dueDateForProject:(id*)sender;
swift:
funcdueDateForProject(sender:anyobject!)-NSDate!
以上两段程式码做的是同样的事,function名称为dueDateForProject,参数型态为id/anyobject,回传值型态为NSDate
swift的anyobject型态=objective-c的id型态
8、swift的optional范例程式?:可能有值,可能无值,想成封装!:一口咬定有值,强制认为有值,想成强制拆封第6行:宣告变数c时一口咬定他之后会有值第9行:一开就强制认为c之后一定会有值,所以此处用c运算时直接使用第17行:一开始宣告变数z时我们不确定,之后使用到z时他会不会有值,所以使用?第0行:在此处的运算需要用到变数z所以不管z是否有值我们都必须用!去强制拆封取得z的值 所幸我们在第1行有给变数z一个值,若是没有给z一个值,在第3行强制拆封要使用却没有值 有可能造成crash8、swift和objective-c在closure(闭包)的不同范例程式
objective-c:
void(^