Форум программистов, компьютерный форум, киберфорум
Наши страницы

Swift

Войти
Регистрация
Восстановить пароль
 
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
#1

Не проходит инициализация - Swift

08.09.2015, 09:25. Просмотров 556. Ответов 3
Метки нет (Все метки)

Приветствую!

Изучаю урок https://youtu.be/CpIoHPUyu8s
по написанию игры, и тут столкнулся с такой пока не очень понятной проблемкой.
Судя по уроку, игра писалась на старом swift-е
и в новой версии как-то не очень понятно? почему функция не работает так как надо

если взглянуть на https://youtu.be/CpIoHPUyu8s?t=16m49s
эту функцию из урока, то новый свифт переделывает ее по другому, а точнее
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
override init(size: CGSize) {
        super.init(size: size)
        self.backgroundColor = SKColor.blackColor()
        player = SKSpriteNode(imageNamed: "gun.png")
        
        player.position = CGPointMake(self.frame.size.width/2, player.size.height/2 + 20)
        
        self.addChild(player)
        
        self.physicsWorld.gravity = CGVectorMake(0, 0)
        self.physicsWorld.contactDelegate = self
    }
 
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
а в уроке начинается с init(size: CGSize) без override
и еще добавляется функция required init?
в общем у меня кораблик не появляется, по какой причине?

ставил брекпоинты в этой функции? они не срабатывают, как ее запустить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2015, 09:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не проходит инициализация (Swift):

Инициализация вью - Программирование iOS
Привет. Небольшой вопросик по обжективу, как из си кода (внизу исходника) инициализировать вьюшку и вызвать метод CallMap #import...

NSString *const и инициализация им NSURL - Программирование iOS
Добрый день! Что можете посоветовать в такой ситуации: Разбираю данные после парсинга JSON, получаю на определенном этапе NSArray со...

Не проходит инициализация CAN Stm32 - ARM
Здравствуйте! Использую Cube и STM32F4Discovery пытаюсь наладить CAN шину, но даже не проходит инициализация, пробовал настраивать...

Не проходит инициализация переменной - Delphi
Всем привет! Есть небольшая проблемка с инициализацией переменной Counts, не могу понять как ее решить... Компилятор выдает ошибку: ...

Что такое инициализация сегментов или инициализация регистров? - Assembler
Подскажите, что такое инициализация сегментов или инициализация регистров? Вот строчка программы из ассемблера: mov Ax, DATA mov DS, AX

Почему при указании пути через имя компа сканирование не проходит, а через IP - проходит? - Администрирование Windows
Всем доброго времени суток, Ситуация такая - Есть 3 компа с Windows 7 на борту (у всех их настройки и ПО идентичные, только имена...

3
WE-St0r
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 2
08.09.2015, 21:26 #2
Урок я не могу посмотреть, но обьясню то, что вижу. Override означает, что вы в своем классе-наследнике переопределяете данный инициализатор. Required значит, что переопределение этого инициализатора необходимо при наследовании. В вашем случае должен вызваться один из инициализаторов. Тот, который required, содержит строку, которая вызывает ошибку в приложении. Для наглядности можете в начале обоих инициализаторов произвести вывод в консоль. При инициалицировании обьекта в консоль вывалится сообщение от одного из инициализаторов. Вставьте ваш код в тот, который вызывается. А вообще советую почитать документацию по свифту. Там про все эти, и многие другие, дерективы много чего сказано.

Добавлено через 18 минут
Урок я не могу посмотреть, но обьясню то, что вижу. Override означает, что вы в своем классе-наследнике переопределяете данный инициализатор. Required значит, что переопределение этого инициализатора необходимо при наследовании. В вашем случае должен вызваться один из инициализаторов. Тот, который required, содержит строку, которая вызывает ошибку в приложении. Для наглядности можете в начале обоих инициализаторов произвести вывод в консоль. При инициалицировании обьекта в консоль вывалится сообщение от одного из инициализаторов. Вставьте ваш код в тот, который вызывается. А вообще советую почитать документацию по свифту. Там про все эти, и многие другие, дерективы много чего сказано.
0
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
08.09.2015, 22:07  [ТС] #3
в том то и дело, что такие моменты мало где описываются. Почему было так, стало так, и так каждый раз, с каждой новой версией.

я понимаю, что я переопределяю его, но он то не переопределяется) хотя все компилирует..
пришлось использовать как обычно топорные методы, потому как объяснений я не нашел.
0
Koshik
1 / 1 / 0
Регистрация: 07.04.2015
Сообщений: 5
17.10.2015, 16:00 #4
Что касается override - то в swift 2.0 его не пишут только для init() с параметрами. Если входные параметры отсутствуют (void), то override не используется.
Так же прошу обратить внимание что теперь (со второй версии стрижа) super.init указывается в самом конце переопределяемой функции.
Извиняюсь что код выделен как с++, но это Swift
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import Foundation
 
class withParam: NSObject{
    init(param: Int){
        self.someVar = param
        //Обратите внимание
        //super.init вызывается самым последним!
        super.init()
    }
    var someVar: Int
}
 
class withoutParam: NSObject{
    override init(){
        someVar = 0
        //Обратите внимание
        //super.init вызывается самым последним!
        //иначе выдает ошибку
        //Property 'self.someVar' not initialized at super.init call
        super.init()
    }
    var someVar: Int
}
0
17.10.2015, 16:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2015, 16:00
Привет! Вот еще темы с ответами:

Прямая l проходит - Геометрия
Прямая l проходит через точку A(7;3;1) параллельно вектору c ={-1;2;1}. Прямая q проходит через точку B(0;2;3) параллельно тому же...

Ping vk.com не проходит - Сети
radist# nslookup vkontakte.ru Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: Name: ...

Не проходит обмен (УТ-БП) - 1С
Выгрузка из УТ ВНЕШНЕЕ СОЕДИНЕНИЕ: {ОбщийМодуль.ДатыЗапретаИзмененияСлужебный.Модуль(893)}: Ошибка при получении значения атрибута...

Регистрация не проходит в БД - PHP
Регистрация не проходит, зарегистрированные данные(login,password и т.д.) не сохраняются в базе. В чем может быть дело, вот код и таблица...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru