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 无效时不停止 的相关文章

  • dispatch_semaphore_t 重用 - 我在这里缺少什么?

    我有一些代码 其中使用dispatch semaphore t 来表示操作完成 当信号量是成员变量时 它的行为似乎不正确 我将展示有效的示例代码和似乎无效的示例代码 implementation someClass dispatch sem
  • UITableView 给出空表,不加载数据

    当保存我的表的视图是主 第一个 视图时 一切正常 但是 当它不是第一个视图并且我切换到该视图时 我的表不会加载数据 并且我得到一个空桌子 使用 NSLog 我可以看出该程序是不调用 numberOfRowsInSection 和 cellF
  • 将数据从子模态 VC 传递到父视图控制器的最佳方法?

    将数据从子模式视图传递到父视图控制器的最佳方法是什么 我的 iPad 应用程序上有一个子模式登录屏幕 我想将用户信息传回父级分割视图控制器 我正在考虑使用 NSNotification 但我不确定这是否是将数据传递回父级的最简单 最有效的方
  • 如何确定自定义 UINavigationItem.titleView 的大小/框架?

    创建自定义视图并将其分配给 navigationItem titleView 属性后 它的显示如下 自定义视图填充两个按钮之间的空间 因此 自定义视图并不以导航栏为中心 如何确定 titleView 属性中视图的框架 我想在导航栏中居中放置
  • 为什么无论 -rdynamic 如何,backtrace 都不包含 Objective-C 符号?

    Update 我正在 Linux 上使用 GNU 运行时 问题是not发生在带有 Apple 运行时的 MacOS 上 更新2 我在 MacOS 上编译了 GNU 运行时并用它构建了示例 该错误确实not发生在带有 GNU 运行时的 Mac
  • Objective-C 中的 at 符号和大括号,@{ ... } 是什么意思?

    我在 Objective C 中有这一行 NSMutableArray mutableArray mutableArray addObject Something aObject Otherthing anotherObject 什么是 部
  • MIDI 文件解析

    我们如何使用 Objective C 进行 MIDI 文件解析 在Java中用于MIDI文件解析的包名为javax sound midi Objective c 有什么东西吗 如果你们中有人回复的话将会有很大的帮助 提前致谢 您可以使用 C
  • 为什么使用 UIImageJPEGRepresentation 方法通过 writetofile 保存的 .jpeg 文件大小比 ios 中的 UIImageWriteToSavedPhotosAlbum 大

    我正在尝试拯救一个UIImage设备中 jpeg 文件的对象 我正在使用这段代码 void saveImageToDocumentsDirectory UIImage mimage withFileName NSString fileNam
  • 如何更改标签栏图标颜色从默认蓝色?

    我有四个标签 我能够将选项卡图标颜色从默认的蓝色更改为红色 或可能任何颜色 并且效果非常好 问题是它仅适用于三个选项卡项目 最后一个选项卡默认为蓝色 下面是代码 我正在编码这个rootviewcontrollerAppDelegate m您
  • 如何执行 UIAlertAction 的处理程序?

    我正在尝试编写一个帮助程序类以允许我们的应用程序支持两者UIAlertAction and UIAlertView 然而 当写alertView clickedButtonAtIndex 方法为UIAlertViewDelegate 我遇到
  • 如何创建一个仅接收一次信号,然后自行取消订阅/释放的 ReactiveCocoa 订阅者?

    我目前正在注册一个属性信号的订阅者 如下所示 RACAble self test subscribeNext id x NSLog signal fired 默认功能是每次 self test 更改时都会触发 但我只想触发一次 然后取消订阅
  • 如何自定义 NSSlider

    我正在尝试在 Cocoa 中实现一个具有 5 个值的自定义滑块 查看我的演示项目 可以在此处下载 http s000 tinyupload com index php file id 07311576247413689572 http s0
  • 在 UITableView 中设置滚动位置

    我有一个应用程序 其工作方式与 iPhone 的 联系人 应用程序的工作方式有些相似 当我们添加新的联系人时 用户将被定向到包含联系人信息的仅查看屏幕 如果我们从导航栏中选择 所有联系人 用户将导航到查看最近添加的联系人的所有联系人列表 我
  • 使用 Nib 实现国际化。这真的是个好主意吗?

    在苹果文档中 他们说笔尖只需将笔尖翻译成多种语言即可实现国际化 我现在正在考虑一个更糟糕但现实的场景 你已经制作了一个巨大的用户界面 然后你将其翻译成 25 种语言 所以你会得到 25 个不同的笔尖 您还会在样式和定义 UI 方面获得巨大的
  • iPhone,使用 isKindOfClass 是否被认为是不好的做法?

    例如 如果有一个 处理所有 类型的方法 if obj isKindOfClass class1 else if obj isKindOfClass class2 etc 这是不好的做法吗 是否有更简洁的替代方案或更好的方法来构建代码 在运行
  • 如何等待 webViewDidFinishLoad 完成

    我有一个初始化 webView 的布尔条件 并在 webViewDidFinishLoad 中加载另一个委托 以便在完成完成后触发 但是 由于布尔值在条件 webViewDidFinishLoad 之前返回 因此页面永远不会完全加载 如何确
  • 使用 UIImagePickerController 的应用程序在拍照后选择“使用照片”时冻结

    我现在正在开发一个简单的照片和视频捕获应用程序 该应用程序成功地允许用户按下按钮即可拍摄照片或视频 但是 一旦您完成拍摄照片或视频 它就会提供 2 个选项 重新拍摄 和 使用照片 或 使用视频 具体取决于您使用的选项 如果用户点击 重新拍摄
  • 对 UIImage 进行方形裁剪,导致图像拉伸

    当尝试执行 UIImage 的中心裁剪时 我得到以下结果 左侧是原始图像640 1136 右边是适合正方形的裁剪图像UIImageView at 320 320 turns to 我对比率元素进行了相当多的修改 以便它可以正确检测要修剪的量
  • 在 iOS 中录制音频并永久保存

    我制作了 2 个 iPhone 应用程序 可以录制音频并将其保存到文件中并再次播放 其中之一使用 AVAudiorecorder 和 AVAudioplayer 第二个是苹果的在这里说话 http developer apple com l
  • 自动布局和ios5

    我正在使用故事板 我已经使用了自动布局 但它不适用于 ios5 并且会崩溃 所以我想删除它 但是 如何取消选中自动布局 但如果我取消选中自动布局 我如何为 iPhone 4 和 5 设置屏幕 Regards 您可以在 IB 中禁用自动布局

随机推荐

  • 使用 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