2015-11-29 3 views
0

Apple любит использовать имена методов, например, doThisWithPoint: и doThisWithTouch:, и я подумал, хотя у меня такой маленький XP, что я, вероятно, ошибаюсь - в Swift Apple хотели, чтобы вы делали подписи с doThis(withPoint : CGPoint) и doThis(withTouch : UITouch), и поэтому вы можете перегрузить методы, и когда мост был создан, интерфейс Objective-C будет выглядеть как doThisWithPoint, но теперь я получаю сообщение об ошибке, что селектор doThis уже существует.Быстрые методы перегрузки с «С» по имени

Любое объяснение того, как лучше всего использовать методы переименования и перегрузки в Swift, было бы полезно. Не только то, что заставляет его работать, но и как идиоматический способ сделать это. Благодаря!

ответ

0

Я нашел это для вас: Overload problem 1 и это Overload problem 2 Одним из решений может быть использование разных имен для методов.

Для решения этой проблемы используйте разные имена: например, func perform1 (операция: Тип) и func perform2 (операция: otherType).

1

От The Swift Programming Language:

По умолчанию внешнего имени первого параметра опущено, а вторые и последующие параметры используют свои локальные имена в качестве внешних имен.

Вы должны включить withPoint или withTouch как часть имени функции. Объявите ваши методы в Swift, как это:

class MyObject: NSObject {  
    func doThisWithPoint(point: CGPoint) { 
    } 
    func doThisWithTouch(touch: UITouch) { 
    } 
} 

Тогда вы можете назвать их в Objective-C, как это:

[myObject doThisWithPoint:point]; 
[myObject doThisWithTouch:touch]; 
Смежные вопросы