NSTimer 无效时不停止

2023-11-26

我的 .h 文件中有以下代码:

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
#import <AVFoundation/AVFoundation.h>
#import <MapKit/MapKit.h>

@interface LandingController : UIViewController<CLLocationManagerDelegate> {
    CLLocationManager *LocationManager;
    AVAudioPlayer *audioPlayer;

}

@property (nonatomic, retain) NSTimer *messageTimer;

- (IBAction)LoginButton:(id)sender;

@end

我的 .m 文件中有以下代码:

@interface LandingController ()

@end

@implementation LandingController
@synthesize messageTimer;

- (void)checkForMessages
{

    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"BINGO:"
                          message:@"Bingo This Works"
                          delegate:nil
                          cancelButtonTitle:@"Okay"
                          otherButtonTitles:nil];

    [alert show];

}

- (IBAction)LoginButton:(id)sender {

    if ([UserType isEqualToString:@"Owner"]) {

        if (messageTimer){ 
        [self.messageTimer invalidate];
        self.messageTimer = nil;
        }

    } else {

        if (!messageTimer){

           self.messageTimer = [NSTimer scheduledTimerWithTimeInterval:10.0
                                                             target:self
                                    selector:@selector(checkForMessages)
                                                           userInfo:nil
                                                            repeats:YES];


        }
    }

}

@end

但当我调用无效时,我的计时器不想停止。

LoginButton 仅按两次,一次是当 strResult = 为“Guard”时,然后应用程序将其更改为等于“Owner”,并且用户再次按登录按钮,所以我认为我没有设置多个计时器。

按下登录按钮并启动计时器后,我转到另一个视图,然后返回再次按下登录按钮,这是我希望计时器停止的时间。由于我切换了视图一会儿然后又回来了,我是否需要做一些特殊的事情来获取 messageTimer ?

有任何想法吗?

Thanks!


你需要打电话[self.messageTimer invalidate]在您创建计时器的同一线程上。只需确保计时器在主线程上创建并失效即可。

dispatch_async(dispatch_get_main_queue(), ^{
    if ([UserType isEqualToString:@"Owner"]) {
        [self.messageTimer invalidate];
        self.messageTimer = nil;
    } else {
        self.messageTimer = [NSTimer scheduledTimerWithTimeInterval:10.0
                                                             target:self
                                                           selector:@selector(checkForMessages)
                                                           userInfo:nil
                                                            repeats:YES];
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSTimer 无效时不停止 的相关文章

  • 如何将 UIImageView 裁剪为自定义形状

    用户是否可以在该位周围画一条虚线 圆圈 UIImageView他们希望裁剪到 然后为UIImageView调整大小到这些点 这有点像 Photoshop 中的套索 选取框效果 更新 从 iOS 8 x 开始 UIImageView 提供了m
  • 将捕获的图像精确裁剪为 AVCaptureVideoPreviewLayer 中的外观

    我有一个使用 AV Foundation 的照片应用程序 我使用 AVCaptureVideoPreviewLayer 设置了一个预览层 它占据了屏幕的上半部分 因此 当用户尝试拍照时 他们只能看到屏幕上半部分看到的内容 这很好用 但是当用
  • Objective C (iphone) 关于发布的问题

    如果我创建一个视图 并将其添加为子视图并将其添加到数组中 是否必须释放它两次 UIView cat UIView alloc initWithFrame someFrame self view addSubview cat self ani
  • 如果加载 dylib,垃圾收集工作队列会崩溃

    我们正在将应用程序从 10 6 移植到 10 8 我正在查看我们在应用程序中加载的 dylib 我面临着非常不寻常的崩溃垃圾收集工作队列并附有以下消息 malloc Thread suspend unable to suspend a th
  • 如何在应用程序项目中使用 Cocoa Touch 框架

    我熟悉构建单个 iOS 应用程序 但我坚持使用 Cocoa Touch 框架向多个应用程序共享通用代码 问题 框架的头文件不可见 无法链接到消费应用程序项目 我做了什么 1 我创建了一个名为 libTestFramework 的项目 Coc
  • UISlider不会自动重绘

    我的应用程序上有一个 UISlider 有时我不仅需要更新它的值 还需要更新它的minimumValue 值已更改 但如果我调用 setValue 方法或为滑块分配新值 它会具有新值 但滑块不会将自身重新绘制到该新值应有的位置 我怎样才能重
  • 使用自动布局、IB 和字体大小时表头视图高度错误

    我正在尝试为我的 uiTableView 创建一个标题视图 不是节标题 我已经有了 我已经在界面生成器中设置了一个 XIB 所有的连接都已连接好并且运行良好 除了桌子没有给它足够的空间 我的问题是表格顶部与表格标题有一点重叠 我的 XIB
  • 如何检索 iPhone 的区域设置

    我用谷歌搜索过它 但令我有点惊讶的是我找不到它 我只想访问设备配置的区域设置 我试图找到如何列出所有系统属性 以防我能在那里找到区域设置 但甚至找不到如何做到这一点 我知道 认为 我之前检索过系统属性 但我也记得在谷歌搜索时找到该信息并不容
  • 使用 ZBarSDK 时 iPhone 相机失去自动对焦功能

    我正在开发一个应用程序 用户可以选择是否要扫描条形码或拍摄某物的照片 为了拍照 我正在使用UIImagePickerController照常 为了扫描条形码 我使用 ZbarSDK 1 2ZBarReaderViewController 拍
  • 当 ViewController 从 UIStoryboard 实例化时,isMemberOfClass 返回 no

    我有一个 OCUnit 测试类 PatientTestViewControllerTests 下面是界面 interface PatientTestViewControllerTests SenTestCase property nonat
  • 如何将自定义 C 代码放入 SwiftPM 包中?

    我正在尝试将 C 代码打包到 Swift 模块中 我们称之为CModule 一旦我将其放入项目的基本文件夹中 Swift模块 并配置了搜索路径 我可以在 Swift 文件中自动完成工作 并检测错误 警告 问题是 导入时它无法识别该模块 并且
  • iPhone Twitter SDK 与 iOS 5 设备的集成问题

    我已成功将 Twitter Sharekit 与我的 iPad 应用程序源集成 当我在模拟器和装有 iOS 4 X 的 iPad 1 上测试该应用程序时 它运行完美 并且成功发布了推文 但是 如果我在装有 iOS 5 的 iPad 2 上安
  • 更改导航项(栏)的背景颜色

    有没有一种简单的方法可以更改视图顶部导航项的背景颜色 我有一个基于导航的应用程序 我只希望一个视图获得另一种背景颜色 我主要使用 IB 创建视图 我找到了以下解决方案 未测试 float r 10 float g 55 float b 13
  • 如何确定 NSTimeInterval 是否发生在任意 NSDate 期间?

    我有一个 NSTimeInterval 我想知道该时间戳是否位于日期的开始和结束之间 基本上我需要能够做类似的事情 NSDate today NSDate date NSTimeInterval myInterval someInterva
  • AVCaptureDevice 找不到任何设备

    这行代码是我今天遇到的问题 macOS 应用程序 NSArray devices AVCaptureDevice devicesWithMediaType AVMediaTypeVideo 我更新Xcode后 系统总是让我空着devices
  • iPhone/Objective-C - 呈现视图和委托时的 UIDocumentInteractionController 类参考

    我在用UIDocumentInteractionController在我的应用程序中 以便在我的应用程序中呈现 Instagram 过滤器屏幕 如下所述 http instagram com developer iphone hooks h
  • 如何用图片替换UITableView?

    我有一个 UITableView 默认为空白 直到用户编辑并向其添加数据 我想显示一张带有说明的图像 直到用户编辑它为止 图片的大小非常适合导航栏和标签栏之间 有没有办法以编程方式执行此操作 您可以使用removeFromSuperview
  • 在文本视图滚动之前无法看到 UITextView 中的文本

    我的应用程序中有一堆文本视图 由于某种原因 无论我以编程方式 来自互联网 还是通过界面生成器 硬编码 设置 UITextView 文本 无论我做什么 当我在测试时转到该文本视图时它都是空白的 但当我滚动它的那一刻 所有文本就突然出现了 只是
  • NSCFData fastCharacterContents 崩溃? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我目前在控制台中收到此崩溃日志 20
  • 推入 UINavigationController 时隐藏 FBFriendPickerViewController 导航栏

    介绍一个实例FBFriendPickerViewController using presentViewController animated completion 非常简单 该类似乎是针对该用例的 但是 我想推送一个实例FBFriendP

随机推荐

  • 使用 XmlTextReader

    我是一名初级程序员 从 C 和 Web 服务开始 In the Service cs我的网络服务文件 我创建一个ReadXMLFile 方法 我尝试读取现有的 XML 文件 从中获取数据并将其放置到我在IService cs file 我的
  • Entity Framework Core、DELETE CASCADE 和 [必需]

    我在 Entity Framework Core 中遇到了 DELETE CASCADE 问题 我似乎找不到好的解决方案 这是我的模型的超级简化版本 User UserID Name Recipe RecipeID UserID Ingre
  • PowerShell 中数字后缀的完整列表是什么?

    可在 PowerShell 数字文字上使用的后缀的完整列表是什么 到目前为止我已经发现 Suffix Example Result L 1L Type Int64 D 1D Type Decimal KB 1KB 1KB 1024 MB 1
  • 通过 HTTP 中间件验证 WebSocket 连接

    问题陈述 我正在尝试使用 Golang 中的基本中间件来保护 websocket 升级程序 http 端点 如下所示WebSocket 协议不处理授权或身份验证 社区建议 有些人建议 尽管含糊其辞 我建议使用应用程序的代码来验证升级握手 以
  • apache中这个配置是什么意思? [关闭]

    Closed 这个问题是无关 目前不接受答案 Header append Vary User Agent env dont vary 谁能对此给出详细的解释 这使用阿帕奇模组头将值 User Agent 附加到 Vary HTTP 标头 但
  • 在哪里可以找到 iPhone 上的 Quartz 2D 绘图示例?

    我将使用 Quartz 在 Iphone 中开发 2D 游戏 Quartz 和 QuartzCore 之间的主要区别是什么 我在互联网上搜索了很多 但只能找到带有 Quartz Examples 的 MAC OS 如果任何机构有任何使用 I
  • 如何使用具有该属性名称的字符串变量访问对象属性?

    我如何在 C 中执行此操作 using System namespace TestProperties28373 class Program static void Main string args Customer customer ne
  • 查询数组大小大于1的文档

    我有一个 MongoDB 集合 其中包含以下格式的文档 id ObjectId 4e8ae86d08101908e1000001 name Name zipcode 2223 id ObjectId 4e8ae86d08101908e100
  • 如何为 CSS 自定义属性设置“inherit”值? [复制]

    这个问题在这里已经有答案了 将自定义属性设置为值inherit完全符合您对其他所有 CSS 属性的期望 它继承其父级的相同属性值 普通财产继承
  • 为什么集合初始值设定项末尾可以有逗号?

    这个问题一直让我困惑 但我猜对于为什么会发生这种情况有一个非常合理的解释 当您有集合初始值设定项时 编译器允许尾随逗号 例如 new Dictionary
  • 是否有一个 cordova 插件可以从 config.xml 读取值?

    我希望从我的 Cordova PhoneGap 应用程序中读取这些值config xml在运行时 name 版权 描述 然而 很惊讶地发现没有 ConfigAPI 参考指南中的功能 http cordova apache org docs
  • 如何知道片段何时在 viewpager 中实际可见

    我在 ViewPager 中使用 4 个片段 因为 ViewPager 提前加载上一个和下一个片段 并且在片段之间导航时不会调用生命周期方法 那么有没有什么方法可以检测 Fragment 何时真正可见 提前致谢 根据 Matt的回答setU
  • 附加到末尾时,python utf-8-sig BOM 位于文件中间

    我最近注意到 Python 在使用以下命令附加到文件时的行为方式并不明显utf 8 sig编码 见下文 gt gt gt import codecs os gt gt gt os path isfile 123 False gt gt gt
  • 我应该如何按索引顺序迭代稀疏数组?

    我有一个稀疏数组 其内容不能保证按索引顺序插入 但需要按索引顺序迭代 要迭代稀疏数组 我知道您需要使用 for in 语句 然而 根据本文 不保证 for in 将以任何特定顺序返回索引 But 像这样的计算器问题建议虽然不能保证对象属性顺
  • 插入标识列的 BCP 格式是什么

    我在尝试使用 BCP 将数据插入表时遇到问题 该表有一个标识列 我正在从文本文件中获取输入 如果有什么好的解决办法请告知 问候 茶颜 我需要做同样的事情 我的同事指出您可以使用 BCP 上的 E 开关来执行此操作 从文档中 E 指定导入的数
  • 在内存警告(Apple 文档缺陷)中卸载 iOS 6 中的视图的正确方法是什么?

    在 iOS 6 中 viewWillUnload and viewDidUnload已弃用 并且 UIViewController 不再卸载内存警告期间屏幕上不可见的视图 这查看控制器编程指南有一个如何手动恢复此行为的示例 这是代码示例 v
  • 如何在 PHP 中正确拆分 PATH 变量?

    我想分开 path getenv PATH 进入其组件 如何以依赖于操作系统的方式确定分隔符 您可以使用PATH SEPARATOR常数 则DIRECTORY SEPARATOR如果需要的话 用于分割路径的常量 看Directory Pre
  • C++ 编译器/链接器是否允许删除未使用的方法?

    C 编译器或链接器 根据任何 C 标准 是否允许删除未使用的方法 编译器似乎可以删除未使用的静态函数 链接器可以删除未使用的函数 但我没有找到类方法的信息 当方法是虚拟的时 这变得非常有趣 Yes 如果该方法未使用 则无法知道它已被删除 因
  • 什么时候真正需要填充共享内存?

    我对 NVidia 的 2 个文档感到困惑 CUDA 最佳实践描述了共享内存是按bank组织的 一般来说在32位模式下每4个字节就是一个bank 我就是这么理解的 然而使用 CUDA 并行前缀和 扫描 详细介绍了由于库冲突而应如何将填充添加
  • NSTimer 无效时不停止

    我的 h 文件中有以下代码 import