类型'NSObject'没有成员'复制'

chi*_*arm 5 ios swift xcode8

我刚刚更新到Xcode 8,现在我收到了项目中的错误

类型'NSObject'没有成员'copy'.

在升级Xcode之前,我没有收到此错误.

注意:我还在使用Swift 2.3.我将UILabel子类化,以便我可以允许用户在长按上复制标签上的文本.以下是我的代码.该行发生错误:

if action == #selector(NSObject.copy(_:))
Run Code Online (Sandbox Code Playgroud)

这是完整的代码:

class MCCopyableLabel: UILabel {

  override init(frame: CGRect) {
    super.init(frame: frame)
    sharedInit()
  }

  required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)!
    sharedInit()
  }

  func sharedInit() {
    userInteractionEnabled = true
    addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(MCCopyableLabel.showMenu(_:))))
  }

  func showMenu(sender: AnyObject?) {
    becomeFirstResponder()
    let menu = UIMenuController.sharedMenuController()
    if !menu.menuVisible {
      menu.setTargetRect(bounds, inView: self)
      menu.setMenuVisible(true, animated: true)
    }
  }

  override func copy(sender: AnyObject?) {
    let board = UIPasteboard.generalPasteboard()
    board.string = text
    let menu = UIMenuController.sharedMenuController()
    menu.setMenuVisible(false, animated: true)
  }

  override func canBecomeFirstResponder() -> Bool {
    return true
  }

  override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
    if action == #selector(NSObject.copy(_:)) {
      return true
    }
    return false
  }
}
Run Code Online (Sandbox Code Playgroud)

OOP*_*Per 2

copy方法不带参数,因此您可能需要将其编写为:

#selector(NSObject.copy)
Run Code Online (Sandbox Code Playgroud)

该表示法#selector(NSObject.copy(_:))适用于具有一个没有标签的参数的方法。