Как ссылаться на классы в Swift?

71
8

Что касается языков iOS, я действительно знаю только Swift, но я пытаюсь научиться переводить с Objective C. Я все в порядке (помогает, что знаю С#), и использую это как руководство для перевода, но я В некоторых точках, которые не находятся в руководстве, вы теряете тупик.

Например, из этого урока попытка перевести эти инструкции не имеет для меня никакого смысла:

Откройте вновь добавленный заголовок CERangeSliderKnobLayer.h и замените его содержимое следующим текстом:

#import <QuartzCore/QuartzCore.h>

@class CERangeSlider;

@interface CERangeSliderKnobLayer : CALayer

@property BOOL highlighted;
@property (weak) CERangeSlider* slider;

@end

Как бы это выглядело в Свифте?

Я знаю, как import QuartzCore но все остальное...

Что такое @Class в Swift?

Что такое @interface?

Я вроде получаю то, что @property сейчас, я предполагаю, что я просто делаю это:

var highlighted: bool
weak var slider: CERangeSlider

Я имею в виду, теперь мой недавно созданный класс выглядит так:

import UIKit
import QuartzCore

class CERangeSliderKnobLayer: CALayer {

}

Куда все это пойдет? Внутри класса я предполагаю. Особенно настройки свойств.

спросил(а) 2015-11-05T02:21:00+03:00 4 года, 11 месяцев назад
1
Решение
91

Прежде всего, в Swift у вас нет интерфейса и реализации. Вы пишете часть реализации (class) и интерфейс, выполненную компилятором Swift и обычно не замечаемую разработчиком. @class больше недоступны, потому что Swift выполняет задание на импорт для вас. Вам просто нужно быть уверенным, что класс доступен (в проекте, с мостом, если из objc или импортирован, если из другой структуры).

Здесь вы хотите:

import UIKit
import QuartzCore

class CERangeSliderKnobLayer: CALayer {
var highlighted: Bool
weak var slider: CERangeSlider
}

Это должно быть в файле CERangeSliderKnobLayer.swift

Геттер и сеттер, сгенерированные @property в objc, выполняются автоматически, когда вы объявляете var в Swift

ответил(а) 2015-11-05T02:34:00+03:00 4 года, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема