Я начал писать расширения Swift для своих контроллеров представления. Итак, у меня сейчас есть три файла:
Мой заголовочный файл, ViewController.h
:
@interface MyViewController : UIViewController
@end
Мой файл реализации Obj-C, ViewController.m
:
@interface MyViewController () <UIScrollViewDelegate>
@property (strong, nonatomic) UIScrollView *scrollView;
@end
@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.scrollView = [[UIScrollView alloc] init];
[self customiseScrollView]; //This is Swift method called from Obj-C file
}
@end
И, наконец, ViewController.swift
:
extension MyViewController {
func customiseScrollView() {
}
}
Мой вопрос: можно ли получить доступ к моим свойствам Obj-C из моего файла реализации Swift? Каждый раз, когда я обращаюсь к нему, я получаю сообщение об ошибке:
Value of type 'MyViewController' has no member 'scrollView'
Бонус 1: Может ли кто-нибудь также уточнить, может ли компонент Swift видеть, что .m также является делегатом. (Чтобы уточнить, выполнение scrollView.delegate = self
в Swift является ошибкой компиляции, поскольку файл Swift не понимает, что файл .m является UIScrollViewDelegate).
Бонус 2: Может ли файл расширения Swift вызывать методы Obj-C, объявленные из аналога .m?