1秒内改方法只执行一次 ios_ios 一段代码3秒只执行一次 - CSDN
精华内容
参与话题
  • iOS第三方微信登录时不走回调方法

    万次阅读 2016-09-21 17:56:49
    ios 开发中第三方微信登录时,使用真机测试,授权登录按钮点击后不走微信demo的 ...就是在APPDelegate中,把之前根据demo设置的delegate:self为调用微信登录的那个控制器。 //从

    ios 开发中第三方微信登录时,使用真机测试,授权登录按钮点击后不走微信demo的

    -(void)onResp:(BaseResp*)resp 回调方法不走,无法判断是否成功

    查看网上一些解决方法,自己尝试了一下可行。


    就是在APPDelegate中,把之前根据demo设置的delegate:self改为调用微信登录的那个控制器。


    //从微信返回第三方APP

    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

    {

        

        LoginViewController * loginVC = [[LoginViewController alloc] init];

        BOOL res = [WXApi handleOpenURL:url delegate:loginVC];

        return res;

    }

    改了之后可能会发现报错,你把设置的这个控制器中的 协议 <WXApiDelegate>写到.h文件中,并引入头文件过来,就可以了。

    这样就可以响应微信授权回调的方法了。



    展开全文
  • 1、init初始化不会触发layoutSubviews  但是是用initWithFrame 进行初始化时,当rect的值不为CGRectZero时,也会触发 2、addSubview会触发layoutSubviews 3、设置view的Frame会触发layoutSubviews,当然...

    layoutSubviews在以下情况下会被调用:

    1、init初始化不会触发layoutSubviews

       但是是用initWithFrame 进行初始化时,当rect的值不为CGRectZero时,也会触发

    2、addSubview会触发layoutSubviews

    3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化

    4、滚动一个UIScrollView会触发layoutSubviews

    5、旋转Screen会触发父UIView上的layoutSubviews事件

    6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件



    但是这里注意的是: 1. 如果是在initWithFrame方法里 初始化了button或者ScrollView (注意:这里是可以改变多种状态的:例如按钮是点击和不点击, scrollView是滚动和不滚动)

    这时候 layoutSubViews 会调用多次. (经过试验证明)



    建议: 不要在LayoutSubViews 方法里写 初始化视图的代码  只允许在里面进行改变布局

    展开全文
  • ios 上浏览器返回上页不会刷新页面问题,页面初始化的方法执行 问题描述 在 ios 上浏览器返回上页不会刷新页面问题,页面初始化的方法执行,造成了很多意外情况,这个问题不能忍; 解决方案 方法...

    ios 上浏览器返回上一页不会刷新页面问题,页面初始化的方法不执行

    问题描述

    在 ios 上浏览器返回上一页不会刷新页面问题,页面初始化的方法不执行,造成了很多意外情况,这个问题不能忍;

    解决方案

    1. 方法一:hack方法,加入iframe强制刷新后,去除
    function(title){
       var u = navigator.userAgent;
       var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
       document.title= title;//添加标题
       if(isIOS){
           // hack在IOS微信等webview中无法修改document.title的情况
           var $iframe = $('<iframe src="/favicon.ico"></iframe>').on('load', function() {
               setTimeout(function() {
                   $iframe.off('load').remove()
               }, 0)
           }).appendTo($('body'))
       }
    };
    1. 方法二:利用 onpageshow 事件触发:
    window.onpageshow=function(e){
        if(e.persisted) {
            window.location.reload() 
        }
    };
    展开全文
  • iOS 如何让个程序在后台运行不被挂起,不死掉前言:这是本人的第篇博客,本来对这种写博客这种东西无感,但是发现有些东西如果不晒在网上,会让很多人费很多的时间去找种问题的解决方法,于是我决定不做个...

    iOS 如何让一个程序在后台运行不被挂起,不死掉

    前言:这是本人的第一篇博客,本来对这种写博客这种东西无感,但是发现有些东西如果不晒在网上,会让很多人费很多的时间去找一种问题的解决方法,于是我决定不做一个伸手党。

    支持原创,转载就注明出处。

    • 苹果后台运行的原理
    • 如何解决
    • 代码实现

    苹果后台运行的原理

    大家都知道,当一个程序进入后台时,除了一些特定的操作比如用户的音频,定位等能够在info.plist里修改设置进行后台操作以外,其他的很难能够进行获取,比如下载一个东西,就比如我们知道的某视频播放器(这里为了排除广告嫌疑,不进行提名)也不能完成后台挂起状态的缓存,我个人觉得这点优化的不是很好。有的人应该知道苹果哪怕后台挂起一个东西,在appdelegate 里进入后台执行的方法,也只能存活600s。
    进入后台执行的代理方法是

    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
    
    }
    

    我们可以在这个代理方法里进行一些后台执行的操作,但是只有600s 的存活时间。

    如何解决

    假如在appdelegate的代理方法里开启一个后台任务

    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
        //开启一个后台任务
        taskId = [application beginBackgroundTaskWithExpirationHandler:^{
    
    
        }];  
    }
    //下面是声明的任务ID
    UIBackgroundTaskIdentifier taskId;

    在任务结束的时候会回调block,所以也就是说600s 以后会回调。我们需要做的就是在程序还未进行到600s 还未死掉的时候进行一个结束程序,新建一个后台程序的操作,这样以来程序就能无止境的在后台进行运行,你可以做一系列的操作。下面废话不多说,我把写的一个Demo的例子粘在下面,请大家参考,有不懂得可以提问。

    //进入后台模式的代理

    UIBackgroundTaskIdentifier taskId;
    
    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
        //开启一个后台任务
        taskId = [application beginBackgroundTaskWithExpirationHandler:^{
    
            //结束指定的任务
            [application endBackgroundTask:taskId];
        }];
    
        [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES];    
    }

    //定时器的方法

    - (void)timerAction:(NSTimer *)timer {
        count++;
    
        if (count % 500 == 0) {
            UIApplication *application = [UIApplication sharedApplication];
            //结束旧的后台任务
            [application endBackgroundTask:taskId];
    
            //开启一个新的后台
            taskId = [application beginBackgroundTaskWithExpirationHandler:NULL];
        }
    
        NSLog(@"%d",count);
    }

    其实很简单,这个demo就是给一个定时器让它一直打印,如果不来回关闭任务创建任务程序会在600s 以后死掉,但是做此操作之后程序就会一直在后台执行。
    PS:写在Appdelegate里面不要忘了给self.window 一个rootViewController.

    希望可以帮到需要的人,第一次写博客,有什么不足的地方希望大家及时指出,也希望大家多多支持。
    分享牛,分享、我们是快乐的。

    展开全文
  • 比如下个网络请求必须依赖上个网络请求的结果才可以进行,最简单直白的方法是:“同步调用”。这里所说的同步是指,等上个网络请求任务完成后,直接在返回数据的delegate或者block中执行个网络请求。 ...
  • 今天试了个小demo,测出个现象,同步出来:object 作为 observer 监听了通知 A,然后 object 中途被释放执行了dealloc,随后app发出这个通知 A:iOS 6、iOS 7、iOS 8: 必挂iOS 9:不会挂真机测试。iOS 9.0 ...
  • ios h5 点击事件失效及点击延迟

    万次阅读 2017-09-26 13:40:45
    1.ios h5 app avalon tap事件失效 使用MUI制作app界面,使用avalon.js渲染数据,发现在(Android上正常)ios上运行时容器div的avalon的ms-on-tap被内容遮住不执行.用MUI的on tap事件可以执行但改动较大,于是为ms-on...
  • 如何用monkey测试IOS

    千次阅读 2019-09-17 16:57:14
    在安卓平台,Monkey是种有效的方法,用来测试软件的稳定性、健壮性。 那么IOS平台,是不是也有这么好的工具呢? 答案是:有。 接下给大家介绍一下IOS Monkey测试环境的准备和执行。 ...
  • iOS重写父类中的方法时要先调用父类中的方法的原因
  • iOS 实现倒计时显示 时 分

    千次阅读 2018-05-19 09:40:04
    头部代码 #import "YQHomeViewController.h" @interface YQHomeViewController () //将sb中的label进行拖拽过来 ...//创建定时器(因为下面两个方法都使用,所以定时器拿出来设置为个属性) @property(non
  • 使用Appium进行iOS的真机自动化测试

    万次阅读 2018-06-12 09:27:17
    使用Appium进行iOS的真机自动化测试 安装类库 Homebrew 如果没有安装过Homebrew,先安装 [ homebrew ] npm 如果没有安装npm,请移步 [ node.js和npm安装 ] 安装依赖库 brew install ...
  • iOS中IMP指针的运用

    千次阅读 2015-07-28 17:30:19
    iOS中IMP指针的运用Runtime中的IMP指针 ios中如果对Runtime有一定了解的话,一定听说过或者用过这个函数 void method_exchangeImplementations(Method m1, Method m2),它通常就是所说的method swizzling,算是...
  • 高级iOS面试题全纪录

    千次阅读 2018-09-02 13:34:24
    iOS基础: 多线程使用,gcd跟operation区别,怎么取消正在执行的gcd任务 GCD 系列知识总结 NSOperation相关知识总结 可以仿照operation的工作原理,设置个BOOL变量,当需要停止时设置成YES,执行任务的时候去...
  • IOS中嵌套H5页面发生空白的问题

    万次阅读 2017-02-24 18:11:39
    IOS嵌入了H5页面,空白页
  • iOS hitTest

    千次阅读 2018-03-26 15:40:06
    文章目录 、什么是hitTest 二、hitTest的调用顺序 ... 1、事件穿透 2、子视图超出父视图范围 、什么是hitTest - (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event ...
  • IOS之秒表计时器

    万次阅读 2015-08-29 16:46:12
    1.利用xib方式新建个秒表计数器。 功能实现: 该应用有三个按钮:开始,记,复位 开始:开始控制着秒表的开始,点击后,按钮文字变成停止,在没有开始的情况下不允许记操作 记:可以记录多个你点击的时间...
  • iOS 马甲包制作(Config 配置)

    千次阅读 2018-03-26 18:22:21
    Project→Info→Configuration→点击+(Debug和Release各添加一次)执行pod install命令(没用pod略过)新建Scheme编辑Scheme(先选择 MaJiaTest_m 也就是马甲包) Run模式下更改 管理Scheme 右边的勾选icon 和 ...
  • iOS开发中,新创建个项目的时候,项目总目录里面没有pods的配置文件,实际上电脑上面是安装的有cocoapods的,那么下面我就介绍一下怎么给新建的项目工程里面添加podfile配置文件,以及包含xcodeproj的那个文件的。...
  • ios 控制器不调用dealloc原因详解

    千次阅读 2015-03-27 15:37:40
    注意,ARC工程是可以重写dealloc方法并被系统调用的,但不需要手动调用父类的dealloc,手写[super dealloc]方法会报错,事实上系统会自动帮你调用父类的dealloc方法,不需要你实现。 但有些时候会
  • IOS平台hosts修改

    千次阅读 2013-08-14 00:17:43
    本文以IOS6系统举例,专门用于IOS设备越狱并修改Hosts的同学参考使用!Let‘s go,! 1.设备越狱:  01.越狱前准备:“设置”中取消掉设备的开机密码以及itunes的备份密码;  02.以IOS6系统举例,下载工具包,...
1 2 3 4 5 ... 20
收藏数 65,547
精华内容 26,218
关键字:

1秒内改方法只执行一次 ios