Swift 与Object C 的比较
1.swift 没有.h文件,也就是头文件 var typeName:String?
5.那么对于这种声明时候带有问号(即声明为可选)的变量如何使用呢? var strValue : String?
let hashValue = strValue?.hashValue
6.连接字符串和字符 字符串插值 pirntln()函数代替oc的NSLog函数, 可以 字符串和 变量或常量 直接输出 var c = 10
println("c=(c)")// () 是占位符 c是变量名
//打印结果:
c=10
let mutiplier = 3
let message = "(mutiplier) times 2.5 is (Double(mutiplier) * 2.5)"
///message is "3 times 2.5 is 7.5"
字符连接 let string1 = "hello"
let character1: Charater = "!"
let stringPlusCharacter = string1 + character1 //输出"hello!"
7.构造器中 classSurveyQuestion {
let text: String
var response: String?init(text: String) {
self.text = text
}
func ask() {
println(text)
}
}
let beetsQuestion = SurveyQuestion(text:"How about beets?")
beetsQuestion.ask()
//输出"How about beets?"
8.默认构造器 classS hoppi ngLis tIte m {
var name: String?
var quantity = 1
var purchased =false
}
var item = ShoppingListItem()
9.分号 let cat = "hello"; println(cat)
10.类型转换(优先级 132) is //类型检查(type check)
as //类型转换(type cast)
11.Optional类型的值 参考:Swift 可选值(Optional Values)介绍 12.声明特性 assignment
var a = 1
a += 2
@assignment func += (inout left: Vector2D,right: Vector2D) {
left = left + right
}
lazy
lazy var menuItems: NSArray = {
let path = NSBundle.mainBundle().pathForResource("MenuItems",ofType: "plist")
return NSArray(contentsOfFile: path!)!
}()
final
NSManaged
required
required override init(frame: CGRect) {
super.init(frame: frame)
configure()
}
注:其他特性暂时不记录,因为还没有深入理解.. 13.属性
struct FixedLengthRange {
var firstValue: Int
let length: Int
}
var rangeOfThreeItems = FixedLengthRange(firstValue: 0,length: 3)
// 该区间表示整数0,1,2
rangeOfThreeItems.firstValue = 6
// 该区间现在表示整数6,7,8
计算属性
struct Point{
var x=0.0,y=0.0
}
struct Size{
var width = 0.0,height = 0.0
}
struct Rect{
var orign = Point()
var size = Size()
var center:Point{
get{
let centerX = origin.x +(size.width/2)
let centerY = origin.y + (size.height/2)
return Point(x:x.centerX,y:centerY)
}
set(newCenter){
orgin.x = newCenter.x - (size.width/2)
orgin.y = newCenter.y - (size.width/2)
}
}
var square = Rect(orign:Point(x:0.0,y:0.0),size:Size(width:10.0,height:10.0))
let initialSquareCenter = square.center
square.center = Point(x:15.0,y:15.0)
println("square.origin is now at ((square.origin.x),(square.origin.y))")
// 输出 "square.origin is now at (10.0,10.0)”
}
上面的例子Rect 提供了一个计算性的属性center 14.属性监视器
可以为属性添加如下的一个或全部监视器: class StepCounter {
var totalSteps: Int = 0 {
willSet(newTotalSteps) {
println("About to set totalSteps to (newTotalSteps)")
}
}
didSet {
if totalSteps > oldValue {
println("Added (totalSteps - oldValue) steps")
}
}
}
let stepCounter = StepCounter() stepCounter.totalSteps = 200
// About to set totalSteps to 200 16.// Added 200 steps
stepCounter.totalSteps = 360 18.// About to set totalSteps to 360 19.// Added 160 steps stepCounter.totalSteps = 896
// About to set totalSteps to 896 22.// Added 536 steps
14.扩展
extension UIColor {
convenience init(colorArray array: NSArray) {
let r = array[0] as! CGFloat
let g = array[1] as! CGFloat
let b = array[2] as! CGFloat
self.init(red: r/255.0,green: g/255.0,blue: b/255.0,alpha:1.0)
}
}
15.便利构造器 class Food {
var name: String
//指定构造器
init(name: String) {
self.name = name
}
//便利构造器
convenience init() {
self.init(name: "[Unnamed]")
}
}
官方文档看了很久,没看出来便利构造器有什么作用。官方文档指出区别如下:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |