Форум программистов, компьютерный форум CyberForum.ru

Swift

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.86
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
#1

Нужна задержка между выполнениями действий - Swift

23.06.2014, 19:48. Просмотров 4583. Ответов 41
Метки нет (Все метки)

Здравствуйте.
Подскажите, как сделать, чтобы текст выводился с задеркой (например в одну секунду).
Например:
Код
println("Ла-ла-ла")
//А тут задержка в 1 секунду.
println("Бла-бла-бла")
На самом деле код нечно по другому будет выглядеть (не в консоле будет вывод).
Но мне надо, чтобы вывелся "Ла-ла-ла" и через секунду "Бла-бла-бла".
Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
23.06.2014, 20:06     Нужна задержка между выполнениями действий #2
Objective-C
1
sleep(1)
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
23.06.2014, 20:53  [ТС]     Нужна задержка между выполнениями действий #3
TexHuK, спасибо.
А как вообще можно находить такие классы? Меня интересуеть не то, что ввожу например "sleep" и мне документация о нём. А так, чтобы я мог найти класс, который мне нужен, не зная его названия, но зная его функционал.

Добавлено через 3 минуты
И ещё одно.
Objective-C
1
sleep(1)
Как сделать, чтобы задержка была пол секунды, или 0,005 секунды?
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 581
24.06.2014, 10:43     Нужна задержка между выполнениями действий #4
dispatch_after - GCD in swift?
http://stackoverflow.com/questions/2...r-gcd-in-swift

How can I use NSTimer in Swift?
http://stackoverflow.com/questions/2...timer-in-swift

Как сделать, чтобы задержка была пол секунды, или 0,005 секунды?
0,005 секунды это не задержка вообще. Минимальная задержка это от 0.1 сек

Добавлено через 6 минут
А как вообще можно находить такие классы?
swift использует теже самые фреймворки что и ObjC
=> методы фреймворков swift идентичны ObjC
=> изучая ObjC == изучению swift, причем материалов по ObjC значительно больше.
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 11:04     Нужна задержка между выполнениями действий #5
Цитата Сообщение от Mistin Посмотреть сообщение
TexHuK, спасибо.
А как вообще можно находить такие классы? Меня интересуеть не то, что ввожу например "sleep" и мне документация о нём. А так, чтобы я мог найти класс, который мне нужен, не зная его названия, но зная его функционал.

Добавлено через 3 минуты
И ещё одно.
Objective-C
1
sleep(1)
Как сделать, чтобы задержка была пол секунды, или 0,005 секунды?
Цитата Сообщение от Mistin Посмотреть сообщение
Как сделать, чтобы задержка была пол секунды, или 0,005 секунды?
на ум только вот это приходит
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import UIKit
 
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        var timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target:self, selector: "myMetod1", userInfo: nil, repeats: false)
   
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func myMetod1() {
        println("lalala")
        
        var timer2 = NSTimer.scheduledTimerWithTimeInterval(0.1, target:self, selector: "myMetod2", userInfo: nil, repeats: false)
        
    }
    
    func myMetod2() {
        println("bababa")
    }
}
кстати, а как останавливать таймер в swift?
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
24.06.2014, 12:21     Нужна задержка между выполнениями действий #6
Цитата Сообщение от TexHuK Посмотреть сообщение
кстати, а как останавливать таймер в swift?
У меня возник вопрос: а при чем тут swift?
Как раньше было замечено swift использует те же самые фреймворки.
NSTimer в swift идентичен NSTimer в obj-c. Следовательно у него точно такие же методы, в том числе эти: fire и invalidate.
Читайте документацию там все расписано.
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 13:05     Нужна задержка между выполнениями действий #7
Цитата Сообщение от Xavier Посмотреть сообщение
У меня возник вопрос: а при чем тут swift?
синтаксис другой следовательно и обращение к методам поменялись

если в objc было
Objective-C
1
[myTimer invalidate]
то в swift
Objective-C
1
[miTimer.invalidate]
все же, некоторые действия вводят в заблуждение, а вот примеров и реально работающих исходников с нужными функциями и методами нету. Приходится тыка в ручную, исходя из логики obj-c
вот я и спрашиваю как правильно остановить? У меня что-то таймер не останавливается..
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 581
24.06.2014, 13:08     Нужна задержка между выполнениями действий #8
У меня что-то таймер не останавливается..[miTimer.invalidate]
код в студию
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 13:21     Нужна задержка между выполнениями действий #9
ну в принципе код почти тот же, только немного изменен

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import UIKit
 
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        Timer1()
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func Timer1() {
        var timer1 = NSTimer.scheduledTimerWithTimeInterval(1.5, target:self, selector: "myMetod1", userInfo: nil, repeats: true)
        [timer1.invalidate] 
        timer1 = nil
        
        Timer2()
    }
    
    func Timer2() {
        var timer2 = NSTimer.scheduledTimerWithTimeInterval(1.5, target:self, selector: "myMetod2", userInfo: nil, repeats: true)
        
        [timer2.invalidate]
        timer2 = nil
    }
    
    
    func myMetod1() {
        println("lalala")
    }
    
    func myMetod2() {
        println("blablabla")
    }
}
и еще, как мне обратиться из функции Timer2 например к объекту timer1?
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 581
24.06.2014, 13:33     Нужна задержка между выполнениями действий #10
var timer1 = NSTimer.scheduledTimerWithTimeInterval(1.5, target:self, selector: "myMetod1", userInfo: nil, repeats: true)
[timer1.invalidate]
что это? таймер создается и сразу же останавливается, кстати после invalidate таймер уже 2 раз не запустить
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 13:47     Нужна задержка между выполнениями действий #11
Цитата Сообщение от noname_club Посмотреть сообщение
что это? таймер создается и сразу же останавливается, кстати после invalidate таймер уже 2 раз не запустить
в том-то и дело, что он не останавливается. Я специально привел такой код, что бы понять это)
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 581
24.06.2014, 13:57     Нужна задержка между выполнениями действий #12
есть подозрения что он там еще вообще не готов останавливаться
есть подозрения что очередь операций swift по другому обрабатывается
так в objc все нормально
Objective-C
1
2
3
4
5
6
7
8
9
-(void)viewWillAppear:(BOOL)animated {
    
    NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:1.5f target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
    [timer invalidate];
}
 
-(void) timerAction {
    NSLog(@"timer action");
}
если закоментировать [timer invalidate], то таймер будет тикать
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 14:06     Нужна задержка между выполнениями действий #13
Цитата Сообщение от noname_club Посмотреть сообщение
есть подозрения что очередь операций swift по другому обрабатывается
Хорошо, как тогда попробовать выполнить остановку таймера из другой функции?
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 581
24.06.2014, 14:11     Нужна задержка между выполнениями действий #14
Хорошо, как тогда попробовать выполнить остановку таймера из другой функции?
Objective-C
1
2
3
-(void) timerAction:(NSTimer*) sender {
    [sender invalidate];
}
скорее всего invalidate все же работает но не в том блоке когда где таймер непосредственно создается.
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
24.06.2014, 14:32     Нужна задержка между выполнениями действий #15
Objective-C
1
2
3
var  timer1 = NSTimer.scheduledTimerWithTimeInterval(1.5, target:self, selector: "myMetod1", userInfo: nil, repeats: true)
        
        timer1.invalidate()
вот так все останавливается

Добавлено через 13 минут
Тем более что это:
Objective-C
1
[timer1.validate]
Вы вообще в курсе что вы делаете
Создаете массив а не метод вызываете.
вот так вызывать метод надо:
Objective-C
1
timer1.validate()
конечно оно не будет работать, лол
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 15:14     Нужна задержка между выполнениями действий #16
Цитата Сообщение от Xavier Посмотреть сообщение
конечно оно не будет работать, лол
ну в objc все так было
в swift-e поменялось

ну а как остановить таймер например из метода1?
пытаюсь обратиться к timer1, но область видимости не позволяет это сделать.
может есть возможность объявить глобальный таймер? что бы можно было к нему обратиться из любой части класса?
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
24.06.2014, 15:32     Нужна задержка между выполнениями действий #17
Цитата Сообщение от TexHuK Посмотреть сообщение
ну а как остановить таймер например из метода1?
Вот так например:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
       var  timer1 = NSTimer.scheduledTimerWithTimeInterval(1.5, target:self, selector: "myMetod1:", userInfo: nil, repeats: true)
        // Do any additional setup after loading the view, typically from a nib.
    }
 
    func myMetod1(timer: NSTimer){
        timer.invalidate()
    }
 
}
Цитата Сообщение от TexHuK Посмотреть сообщение
в swift-e поменялось
В таком случае советую все таки для начала с основами синтаксиса ознакомиться, а потом уже с NSTimer-aми и компанией разбираться. Благо литература для этого есть и она достаточно удобная и понятная.
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 15:50     Нужна задержка между выполнениями действий #18
Цитата Сообщение от Xavier Посмотреть сообщение
В таком случае советую все таки для начала с основами синтаксиса ознакомиться, а потом уже с NSTimer-aми и компанией разбираться. Благо литература для этого есть и она достаточно удобная и понятная.
ну как бы основы учатся, в принципе нечего сложного, практика тоже нужна, есть только некоторое недопонимание как всегда. Спасибо конечно за пример, только я вот не пойму, а если у меня много таких переменных? Мне их все перечислять в аргументах функции? Т. е. глобального объявления переменных тут не работает?
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
24.06.2014, 16:07     Нужна задержка между выполнениями действий #19
Нет ну почему же не работает, все работает. Хочешь как глобальную объявляй вне класса, хочешь как свойство класса объявляй, все на твое усмотрение. Просто в данном случае это более традиционный метод.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2014, 16:46     Нужна задержка между выполнениями действий
Еще ссылки по теме:

Python задержка между запросами к url
ActionScript AS 3.0 Задержка между действиями при нажатии кнопки
Нужна задержка в выполнении программы или как использовать таймер? Delphi
Proxy. Задержка между запросами Node.js

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

Или воспользуйтесь поиском по форуму:
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 16:46     Нужна задержка между выполнениями действий #20
Вот теперь все встало на свои места
Yandex
Объявления
24.06.2014, 16:46     Нужна задержка между выполнениями действий
Ответ Создать тему
Опции темы

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