Code:https://github.com/jiaxianhua/iOSDevLogError:http://stackoverflow.com/questions/29457720/compiler-error-method-with-objective-c-selector-conflicts-with-previous-declaraI myself is also taking the Standford course and I got stuck here for a long time too, but after some searching, I found something from here: Xcode release notes and it mentioned something below: Swift 1.2 is strict about checking type-based overloading of @objc methods and initializers, something not supported by Objective-C. // Has the Objective-C selector "performOperation:". func performOperation(op: NSOperation) { /* do something */ } // Also has the selector "performOperation:". func performOperation(fn: () -> Void) { self.performOperation(NSBlockOperation(block: fn)) } This code would work when invoked from Swift, but could easily crash if invoked from Objective-C. To solve this problem, use a type that is not supported by Objective-C to prevent the Swift compiler from exposing the member to the Objective-C runtime: If it makes sense, mark the member as private to disable inference of @objc. Otherwise, use a dummy parameter with a default value, for example: _ nonobjc: () = (). (19826275) Overrides of methods exposed to Objective-C in private subclasses are not inferred to be @objc, causing the Swift compiler to crash. Explicitly add the @objc attribute to any such overriding methods. (19935352) Symbols from SDKs are not available when using Open Quickly in a project or workspace that uses Swift. (20349540)what i did was just adding "private" in front of the override method like this: private func performOperation(operation: Double -> Double) { if operandStack.count >= 1 { displayValue = operation(operandStack.removeLast()) enter() }}