美文网首页
OC与swift的区别

OC与swift的区别

作者: 乌七猫 | 来源:发表于2016-10-17 22:40 被阅读0次

Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。目前已经更新到Swift2.0,即将发布3.0版本.听说有很大的变动呢.现在我们先来了解一下Swift与OC基础的小异同(不过如果要说它与OC有什么不同,感觉很不同啊~~~)1.输出日志不同2.常量变量定义不同,swift 类型的长短比OC更精确,swift是类型安全的语言,swift不允许隐式转换,但是可以显示转换3.运算符:+ , - ,  * , / ,%, ++,--,OC和swiftch除了取模运算符,其他用法都一样,OC取模必须是整数,swift取模可以是小数,swift不可以连续赋值,但是OC可以4.分支@11)、if后的括号可以省略2)、if后只能接bool值3)、if后的大括号不能省略@2swift和OC的循环差不多,但是swift,for后括号可以省略@31)while循环:while后的括号可以省略,只能是bool值作为条件语句2)OC中有do-while,swift中do是用来捕获异常的,swift里用repeat-while4.swift里有元组,OC木有5.swift的nil和OC有些不一样,OC只有对象可以用nil,swift基础类型(整形,浮点)没有值时也是nil,当初始化的时候,swift可以没有初始值的,产生了可选值Optional。6.OC/swift的字符分别用''/"",字符串NSString/String  @""/"",OC以/0结束字符串,swift不是 1.OC 用NSLog输出日志  swift 用print输出日志swift语句结束不需要加;号2.OC 定义常量 const int a = 10;  swift 定义常量 let a = 10  OC 定义变量 int a = 10;  swift 定义变量  var a:Int = 10先确定类型,再赋值var a:Inta = 20print(a) let a:Float = 10.3 //表示32位浮点型let b:Double = 10.2 //表示64位浮点型 //swift 类型的长短比OC更精确let intValue1 :Intlet intValue2 :Int16let intValue3 :Int32let intValue4 :Int64let uintValue :UInt //swift是类型安全的语言,如果直接赋值错误,直接报错,OC不会let uintValue:UInt = -10//swift不允许隐式转换,但是可以显示转换var a:Int = 10var b:Float = Float(a)范围运算符:    封闭范围运算符:    包括闭包区间所有值 a...b    半封闭范围运算符:    包含头不包含尾 a..0) //swift中do是用来捕获异常的repeat {index--print(index)}while (index > 2)4.元组:将多个相同或者不同类型的值用一个小括号括起来就是一个元组。元组和结构体很像,实际上元组是复合类型。小括号内可以写任意类型,如果不定义类型,可以根据数据自动判断推算出类型 //省略了类型let person = ("YCG",17,180.00)//没有省略类型let person1:(String,Int,Double) = ("YCG",17,180.00)//获取元组中的某一项print(person.0)print(person.1)print(person.2)//以上元组定义有很大的缺陷,可读性特别差。//用其他方式定义元组//省略类型let person2 = (name:"YCG",age:17,height:80.00)//没有省略类型let person3:(name:String,age:Int,height:Double) = (name:"YCG",age:17,height:80.00)//获取相应的值print(person2.name)print(person3.height) //元组的其他写法 let (name,age,height) = (name:"YCG",age:17,height:80.00)print(name)print(age)print(height)5.定义可选值很容易,只需在类型的后面加一个?就行。例如:var value:Int? 一个Optional值和一个非Optional值的区别,Optional值未经初始化虽然为nil,但普通变量连nil的没有。  var value:Int?    print(value) //nil    var value:Int    print(value) //直接报错 提取可选类型的值(强制解析)Optional值不能被直接使用,因为可选值有两种状态,分别是有值和没值,所以我们需要告诉编译器是否有值 强制解析可选类型的值,只需在变量后加!就可以。 var value:Float? var value2:Float = value! print(value2) 注意:如果value没有值,会报运行时错误。 当我不知道 Optional是否有值,该怎么操作?如果值不为nil,再执行后面的代码。var value:Int? = 10 if let tmpValue = value {//先定义一个中间常量,value即时没有值,也不会崩溃  print(tmpValue)    }可选项:??,他可以对nil进行快速判断,??后面的值是参与计算的var num:Int? let result :Int = num ?? 0 print(result)6.//字符串的常用方法//1、初始化空字符串let emptyString = ""let emptyString2 = String()//2、遍历字符串let string2 = "你是我们的好朋友!"for a in string2.characters {    print(a)}//3、获取字符串的长度let count = string2.characters.countprint(count)//4、判断字符串是否为空let emptyStr = "1"if emptyStr.isEmpty {    print("yes")}//5、字符串的拼接let str1 = "hello"let str2 = "world!"let result = str1 + str2 var str3 = "haha"str3 = str3 + str2print(str3) //6、格式化字符串 let intValue = 10let str4 = "爱情"let str5 = "\(intValue)、因为\(str4),不会悲伤"print(str5) //取小数后两位let pi = 3.1415let str6 = String(format: "%.2f", pi)print(str6) //7、字符串比较 //和C语言strcmp一样 let str7 = "a"let str8 = "ab" if str7 > str8 {    print(">")} else if str7 < str8 {    print("<")} //8、是否有前后缀 let str9 = "www.baidu.com"if str9.hasPrefix("www") {    print("yes")} else {    print("no")}if str9.hasSuffix("cm") {    print("yes")} else {    print("no")} //9、大小写let str10 = str9.uppercaseStringlet str11 = str9.lowercaseString print(str10) //10、String转基本数据类型 let str12 = "5.2吗"let num = Float(str12)print(num) //11、截取字符串let str13 = "你是我们的好朋友!"//str13.startIndex  从0开始 Index不是intlet fromStr = str13.startIndex.advancedBy(2)let toStr = str13.endIndex.advancedBy(-2)let str14 = str13.substringFromIndex(toStr) let range:Range= Range(start: fromStr, end: toStr)

let str15 = str13.substringWithRange(range)

print(str15)

let toStr1 = (str13 as NSString).substringToIndex(2);

print(toStr1)

let range1 = NSRange(location: 2, length: 6)

let toStr2 = (str13 as NSString).substringWithRange(range1)

print(toStr2)

相关文章

  • OC与swift的区别

    OC与Swift的区别一(文件结构) OC与Swift的区别一(常量、变量、运算符) OC与Swift的区别三(条...

  • Swift语言基础

    //Swift 与 OC 的区别

  • swift5版本学习

    swift与OC区别:swift与OC1、Swift容易阅读,语法和文件结构简易化。2、Swift更易于维护,文件...

  • Swift--001:Swift编译 & SIL分析

    Swift与OC编译区别 swift与oc编译区别Swfit使用前端编译器swiftc,降级编译成IR,再通过后端...

  • Swift基础:一.Swift与OC区别:

    一.Swift与OC区别: 1.swift程序的入口是UIApplicationMain; 2.OC的类是...

  • ios面试

    一、OC与Swift的区别 1.swift是静态语言,有类型推断,OC是动态语言。2.swift面向协议编程,OC...

  • iOS面试

    # 一、OC与Swift的区别 1.swift是静态语言,有类型推断,OC是动态语言。 2.swift面向协议编程...

  • OC与Swift的主要区别

    swift与OC的主要区别就是语法区别,其他大抵相同. 区别1: swift中使用let定义常量,var定义变量....

  • Swift与OC的区别

    Swift与OC的区别 1、基础篇 2、监听方法 OC 使用 @selector(actionName) Sw...

  • 【Swift】oc与Swift混编方法调用

    本文不介绍桥文件搭建和类的导入,只是阐述oc与swift函数方法的小区别 oc中有类方法与对象方法,调用swift...

网友评论

      本文标题:OC与swift的区别

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