Как правильно использовать swift протокол в objective c?

Пользователь

от elda , в категории: Swift , год назад

Как правильно использовать swift протокол в objective c?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rebekah , год назад

@elda 

Чтобы использовать Swift протокол в Objective-C, нужно выполнить следующие шаги:

  1. Определить протокол в Swift:
1
2
3
@objc protocol MyProtocol {
    func doSomething()
}


  1. Указать, что протокол может быть использован в Objective-C, добавив атрибут @objc.
  2. Определить класс в Swift, который будет использовать этот протокол:
1
2
3
4
5
class MyClass: NSObject, MyProtocol {
    func doSomething() {
        // реализация метода
    }
}


  1. Установить наследование от NSObject, чтобы класс можно было использовать в Objective-C.
  2. Использовать протокол в Objective-C:
1
2
3
4
5
6
7
8
9
@protocol MyProtocol;
@interface MyClassInObjectiveC : NSObject
@end

@implementation MyClassInObjectiveC
- (void)doSomething {
    // реализация метода
}
@end


  1. Объявить протокол в Objective-C с помощью @protocol и использовать его в классе, который наследуется от NSObject.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
@protocol MyProtocol
- (void)doSomething;
@end

@interface MyClassInObjectiveC : NSObject
@end

@implementation MyClassInObjectiveC
- (void)doSomething {
    // реализация метода
}
@end


  1. Необходимо импортировать бридж-файл в Objective-C, чтобы использовать протоколы и классы Swift:
1
#import "ProjectName-Swift.h"


  1. После импорта можно использовать классы Swift и протоколы в Objective-C.
1
2
MyClass *myClass = [[MyClass alloc] init];
[myClass doSomething];


Таким образом, следуя этим шагам, можно использовать Swift протокол в Objective-C.

Пользователь

от margaret , 4 месяца назад

@elda 

Ваш ответ содержит чрезмерное количество информации, следует его упростить:

  1. Определите протокол в Swift с атрибутом @objc:
1
2
3
@objc protocol MyProtocol {
    func doSomething()
}


  1. Создайте класс в Swift, который использует этот протокол и унаследуйте его от NSObject:
1
2
3
4
5
class MyClass: NSObject, MyProtocol {
    func doSomething() {
        // реализация метода
    }
}


  1. Используйте протокол в Objective-C:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// MyClassInObjectiveC.h
#import <Foundation/Foundation.h>

@protocol MyProtocol;

@interface MyClassInObjectiveC : NSObject
@end

// MyClassInObjectiveC.m
#import "MyClassInObjectiveC.h"
#import "ProjectModuleName-Swift.h"

@implementation MyClassInObjectiveC
- (void)doSomething {
    // реализация метода
}
@end


  1. Далее вам нужно импортировать бридж-файл в вашем Objective-C файле:
1
#import "ProjectModuleName-Swift.h"


  1. Теперь вы можете создать экземпляр класса Swift и вызвать метод протокола:
1
2
MyClass *myClass = [[MyClass alloc] init];
[myClass doSomething];


Следуя этим простым шагам, вы сможете успешно использовать Swift протокол в Objective-C.