pointer/reference is replaced by “optional”, as a consequence func1(arg) is not the same as func(arg!)

String is a value
String? is a reference
passing from reference to value needs ‘!’ to tell the complier you are sure there is a value
? cannot be used with a variable, only ! which unwraps

super.init cannot be called until all “let” members are initialized
No more implicit conversion between String and NSString

 

Swift 2 Changes:

override is required keyword
Optional ! or ? is always needed
numberWithFloat type of construction is replaced by (f: float)
optional type cannot be used as boolean, must use (t == nil)
non-optional type cannot be compared to nil
“throw” call must be marked with “try” but the block is marked as “do”
“defer” is like “final” in java