#objective-c #swift
#objective-c #swift
Вопрос:
У меня есть некоторый устаревший код в Objective C, который я не хочу переписывать в Swift, но я хочу использовать этот код в Swift.
У меня это работает нормально, но неудобно и долго выполнять преобразование между базовыми типами в Swift и Objective C. Например, вам нужно преобразовать из Int в Swift в Int32, чтобы использовать его в Objective C.
Чтобы упростить это, я рад создать дополнительные перегрузки в моем коде Objective C, которые принимают типы Swift. Это кажется проще, чем выполнять преобразование в каждом сайте вызова.
Есть ли способ использовать типы Swift в Objective C? Что-то вроде этого:
-(void) doSomething:(Int*)theInt {
}
Возможно ли это?
В противном случае возможно ли создать неявный оператор приведения между двумя типами в Swift?
Любые другие предлагаемые решения?
Как и было запрошено, вот пример кода текущей ситуации.
Вот Objective C:
@interface TestClass : NSObject
(void) somemethod:(int)param;
@end
@implementation TestClass
(void) somemethod:(int)param {
}
@end
Вот пример вызова метода в Swift:
let swiftInt :Int = 2
TestClass.somemethod(Int32(swiftInt))
Я хотел бы устранить необходимость преобразования в Int32 на каждом сайте вызова при вызове из Swift.
Комментарии:
1. Swift
Int
вызываетсяNSInteger
в Objective C. Редактировать: ну, это автомосты между ними, хотя они не одного типа.2. Можете ли вы предоставить пример кода?
3. @M_G Я добавил пример текущей ситуации в соответствии с запросом
Ответ №1:
Я изменил сигнатуру метода, чтобы использовать NSInteger вместо int, и он отлично работает без необходимости его приведения.
(void) somemethod:(int)param;
изменено на:
(void) somemethod:(NSInteger)param;