在另一个View Controller中停止线程

lr100

我对线程很陌生,所以请客气。

在对用户进行身份验证之后,在Login View Controller中,我启动了一个线程来每30秒获取一次用户地理位置(仅在用户登录时才想进行此操作),然后移至显示以下内容的应用程序的主视图控制器中:应用程序主要信息。

当用户注销时,我想取消创建的线程,该线程每30秒收集一次地理位置信息。

我该怎么做呢?

我接近这个正确吗?如果没有,请提供代码示例和解释

非常感谢!!!!

Loggin视图控制器

...
- (IBAction)loginButton:(id)sender {
    NSInteger success = 0;

    //Check to see if the username or password texfields are empty or email field is in wrong format
    if([self validFields]){
        //Try to login user
        success = [self loginUser];
    }
    //If successful, go to the MainView
    if (success) {
        //Start getting users Geolocation in a thread
        [NSThread detachNewThreadSelector:@selector(startGeolocation:) toTarget:self withObject:nil];

        //Go to Main view controller
        [self performSegueWithIdentifier:@"loginSuccessSegue" sender:self];
    }
    else
    {
        //Reset password text field
        self.passwordTextField.text = @"";
    }
}
...
//Thread to get Geolocation every 30 seconds
-(void)startGeolocation:(id)param{
    self.geoLocation = [[GeoLocation alloc] init];
    while(1)
    {
        //****************START GEOLOCATION*******************************//
        AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
        [appDelegate.databaseLock lock];
        NSLog(@"Geolocation:(%f,%f)", [self.geoLocation getLatitude], [self.geoLocation getLongitude]);
        sleep(30);
        [appDelegate.databaseLock unlock];
    }
}

主视图控制器

...
//When the Logout Button in MenuView is pressed this method will be called
- (void)logoutButton{

    //Cancel the geolocation tread
    //????????????????????????????        

    //Log the user out
    [self logoutUser]
}
...
生命力

我建议为此使用GCD。

dispatch_queue_t dq = dispatch_queue_create("bkgrndQueue", NULL);
dispatch_async(dq, ^{
  @autoreleasepool{
     while(SEMAPHORE_NAME){
        // do stuff in here
     }
   }
}

然后在另一个视图控制器中

SEMAPHORE_NAME = NO;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从另一个View Controller使用原型单元

来自分类Dev

从另一个View Controller停止dispatch_async内部的无限while循环

来自分类Dev

通知线程停止-在另一个线程和类中引发事件-C#

来自分类Dev

从一个View Controller导航到另一个

来自分类Dev

Python:一个线程中的进程停止另一个线程中的进程完成

来自分类Dev

如何从另一个线程正确停止QTimer

来自分类Dev

从 EDT (EventQueue) 停止另一个线程

来自分类Dev

在另一个 View Xcode 中显示一个 ViewController

来自分类Dev

如何从另一个View Controller访问Tab View Controller

来自分类Dev

从另一个View Controller Swift 2.0更改View Controller图像

来自分类Dev

从SplitViewController中的MasterViewController切换到另一个View Controller

来自分类Dev

在另一个View Controller中调用方法,但不能选择吗?

来自分类Dev

如何从另一个View Controller中的变量获取值

来自分类Dev

android:从另一个类中的另一个线程更新UI

来自分类Dev

Python多线程使用另一个线程中的一个线程的数据

来自分类Dev

在另一个线程中从模块更新标签

来自分类Dev

startActivty在另一个线程中

来自分类Dev

在另一个线程中设置变量

来自分类Dev

在GUI中显示另一个线程的状态

来自分类Dev

在另一个线程中从模块更新标签

来自分类Dev

与另一个线程中的循环通信

来自分类Dev

等到另一个线程在 jQuery 中工作

来自分类Dev

从另一个线程访问View时发生不可预测的行为

来自分类Dev

将UISwitch状态从一个View Controller传递到另一个ViewController

来自分类Dev

从jQuery中的另一个功能停止功能

来自分类Dev

推送到另一个View Controller占用iPhone太多时间

来自分类Dev

将Core Data对象从DetailViewController传递到另一个View Controller

来自分类Dev

[iOS]:检测从另一个外部应用返回后何时显示View Controller

来自分类Dev

快速启动屏幕动画后更改为另一个View Controller

Related 相关文章

  1. 1

    从另一个View Controller使用原型单元

  2. 2

    从另一个View Controller停止dispatch_async内部的无限while循环

  3. 3

    通知线程停止-在另一个线程和类中引发事件-C#

  4. 4

    从一个View Controller导航到另一个

  5. 5

    Python:一个线程中的进程停止另一个线程中的进程完成

  6. 6

    如何从另一个线程正确停止QTimer

  7. 7

    从 EDT (EventQueue) 停止另一个线程

  8. 8

    在另一个 View Xcode 中显示一个 ViewController

  9. 9

    如何从另一个View Controller访问Tab View Controller

  10. 10

    从另一个View Controller Swift 2.0更改View Controller图像

  11. 11

    从SplitViewController中的MasterViewController切换到另一个View Controller

  12. 12

    在另一个View Controller中调用方法,但不能选择吗?

  13. 13

    如何从另一个View Controller中的变量获取值

  14. 14

    android:从另一个类中的另一个线程更新UI

  15. 15

    Python多线程使用另一个线程中的一个线程的数据

  16. 16

    在另一个线程中从模块更新标签

  17. 17

    startActivty在另一个线程中

  18. 18

    在另一个线程中设置变量

  19. 19

    在GUI中显示另一个线程的状态

  20. 20

    在另一个线程中从模块更新标签

  21. 21

    与另一个线程中的循环通信

  22. 22

    等到另一个线程在 jQuery 中工作

  23. 23

    从另一个线程访问View时发生不可预测的行为

  24. 24

    将UISwitch状态从一个View Controller传递到另一个ViewController

  25. 25

    从jQuery中的另一个功能停止功能

  26. 26

    推送到另一个View Controller占用iPhone太多时间

  27. 27

    将Core Data对象从DetailViewController传递到另一个View Controller

  28. 28

    [iOS]:检测从另一个外部应用返回后何时显示View Controller

  29. 29

    快速启动屏幕动画后更改为另一个View Controller

热门标签

归档