OC中的dealloc--Swift中的deinit隐圾。對象釋放的時候會調(diào)用
-
Swift中如果文件在同一個命名空間下画侣,是不需要導入頭文件的
- 同一個命名空間可以理解為同一個工程
- 命名空間(默認是項目名稱)可以修改盒延,build setting中搜索product name聂薪,修改名稱(打印對象的時候會體現(xiàn)出來,默認是項目名稱)
OC中用#pragra mark來分隔扒俯,Swift用
//MARK: - xxx
-
Swift的強轉(zhuǎn)格式
CGFloat(childViewControllers.count)
(view as! HomeVisitorView).startRotation()
-
關(guān)于self:
- Swift中一般不用也不推薦寫self
- 一般只有需要區(qū)分兩個變量(比如self.name = name)局雄,或者在閉包中訪問外界屬性才需要加上self甥啄。
枚舉
- swift枚舉標準格式
public enum SVProgressHUDStyle : Int {
case Light
case Dark
case Custom
}
- 選擇附加參數(shù),如果不需要參數(shù),如下這么寫
- 類似于OC的
kNilOptions
- 類似于OC的
UIView.animateWithDuration(2.0, delay: 0.0, usingSpringWithDamping: 0.7, initialSpringVelocity: 5, options:
UIViewAnimationOptions.init(rawValue: 0), animations: {
self.startButton.transform = CGAffineTransformIdentity
}) { (_) in
}
- 傳入多個枚舉
UIRectCorner corners = UIRectCornerTopRight | UIRectCornerBottomRight | UIRectCornerBottomLeft;
//create path
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corners cornerRadii:radii];
let corner = UIRectCorner.TopLeft.rawValue | UIRectCorner.TopRight.rawValue | UIRectCorner.BottomLeft.rawValue
UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner(rawValue: corner), cornerRadii: size)
代理
class ComposePhotoCell: UICollectionViewCell {
var delegate: ComposePhotoCellDelegate?
}
protocol ComposePhotoCellDelegate {
func composePhotoCellAddPhotoClick(cell: ComposePhotoCell) -> Void
}
- 遵守協(xié)議:OC中用尖括號炬搭,Swift直接用逗號隔開就可以了
- Swift中的擴展:提倡把tableView的數(shù)據(jù)源和代理放到擴展中,這樣也不用遵守協(xié)議
extension ViewController: UITableViewDateSource, UITableViewDelegate
{
// 類似于OC中的分類蜈漓,不能在這里定義屬性
}
- 要設置為可選方法穆桂,需要這樣
- 注意設置了可選之后融虽,需要判斷代理是否已經(jīng)實現(xiàn)代理方法
@objc
protocol ComposePhotoCellDelegate {
optional func composePhotoCellAddPhotoClick(cell: ComposePhotoCell) -> Void
}
與OC的混編
- 加入OC的文件:需要導入頭文件享完,具體如下:
- 新建一個OC文件(橋接文件),在里面import所有需要導入的OC頭文件
- 設置橋接文件的路徑有额,如圖
QQ20160815-0.png