swift-基础-一些OC与Swift的对照

  • OC中的dealloc--Swift中的deinit。对象释放的时候会调用

  • Swift中如果文件在同一个命名空间下,是不需要导入头文件的

    • 同一个命名空间可以理解为同一个工程
    • 命名空间(默认是项目名称)可以修改,build setting中搜索product name,修改名称(打印对象的时候会体现出来,默认是项目名称)
  • OC中用#pragra mark来分隔,Swift用//MARK: - xxx

  • Swift的强转格式

    • CGFloat(childViewControllers.count)
    • (view as! HomeVisitorView).startRotation()
  • 关于self:

    • Swift中一般不用也不推荐写self
    • 一般只有需要区分两个变量(比如self.name = name),或者在闭包中访问外界属性才需要加上self。

枚举

  • swift枚举标准格式
public enum SVProgressHUDStyle : Int {
    
    case Light 
    case Dark 
    case Custom 
}
  • 选择附加参数,如果不需要参数,如下这么写
    • 类似于OC的kNilOptions
        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
}
  • 遵守协议:OC中用尖括号,Swift直接用逗号隔开就可以了
  • Swift中的扩展:提倡把tableView的数据源和代理放到扩展中,这样也不用遵守协议
extension ViewController: UITableViewDateSource, UITableViewDelegate
{
    // 类似于OC中的分类,不能在这里定义属性
}
  • 要设置为可选方法,需要这样
    • 注意设置了可选之后,需要判断代理是否已经实现代理方法
@objc
protocol ComposePhotoCellDelegate {
    optional func composePhotoCellAddPhotoClick(cell: ComposePhotoCell) -> Void
}

与OC的混编

  • 加入OC的文件:需要导入头文件,具体如下:
    • 新建一个OC文件(桥接文件),在里面import所有需要导入的OC头文件
    • 设置桥接文件的路径,如图
swift-基础-一些OC与Swift的对照_第1张图片
QQ20160815-0.png

你可能感兴趣的:(swift-基础-一些OC与Swift的对照)