展开

关键词

对iPhone手机型号进行判断

#define IS_IPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? _5 ([UIScreen instancesRespondToSelector: @selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)

42120

深入浅出 RunLoop(三):事件循环机制

|| __CFRunLoopModeIsEmpty(rl, currentMode, rl->_currentMode)) { Boolean did = false; if (currentMode ) __CFRunLoopModeUnlock(currentMode); __CFRunLoopUnlock(rl); return did ? ->_observerMask & kCFRunLoopEntry ) __CFRunLoopDoObservers(rl, currentMode, kCFRunLoopEntry); // ); // 通知 Observers:即将退出 RunLoop(此处有 Observer 会释放 AutoreleasePool) if (currentMode->_observerMask (currentMode); __CFRunLoopPopPerRunData(rl, previousPerRun); rl->_currentMode = previousMode

46910
  • 广告
    关闭

    腾讯云+社区系列公开课上线啦!

    Vite学习指南,基于腾讯云Webify部署项目。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS开发中常用的宏

    CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO) #define ZJDevice_Is_iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO) #define ZJScreen_Bounds

    24520

    RunLoop总结:RunLoop基础知识

    if (__CFRunLoopModeIsEmpty(currentMode)) return; /// 1. __CFRunLoopDoObservers(runloop, currentMode, kCFRunLoopBeforeTimers); /// 3. __CFRunLoopDoBlocks(runloop, currentMode); /// 4. sourceHandledThisLoop = __CFRunLoopDoSources0(runloop, currentMode, stopAfterHandle); if __CFRunLoopDoObservers(rl, currentMode, kCFRunLoopExit); } 上面的 2、3、4、5、7,其实都是 从 __CFRunLoopRun 中摘出来的。

    47120

    iOS 之如何利用 RunLoop 原理去监控卡顿?

    if (__CFRunLoopModeIsEmpty(currentMode)) return; /// 1. __CFRunLoopDoObservers(runloop, currentMode, kCFRunLoopBeforeTimers); /// 3. __CFRunLoopDoBlocks(runloop, currentMode); /// 4. sourceHandledThisLoop = __CFRunLoopDoSources0(runloop, currentMode, stopAfterHandle); /// 执行被加入的block __CFRunLoopDoBlocks(runloop, currentMode); /// 5.

    75720

    RunLoop 源码阅读

    = __CFRunLoopFindMode(rl, modeName, false); if (NULL == currentMode || __CFRunLoopModeIsEmpty(rl , currentMode, rl->_currentMode)) { // 如果当前 mode 和 runloop 的 mode 都为 nil,则退出 Boolean did = false; if (currentMode) __CFRunLoopModeUnlock(currentMode); __CFRunLoopUnlock(rl ->_observerMask & kCFRunLoopEntry ) __CFRunLoopDoObservers(rl, currentMode, kCFRunLoopEntry) ) __CFRunLoopDoObservers(rl, currentMode, kCFRunLoopExit); __CFRunLoopModeUnlock(currentMode

    49250

    iOS获取屏幕宽高、设备型号、系统版本信息介绍1、获取屏幕的宽高2、获取设备的型号3、获取系统版本

    根据屏幕分辨率判断设备,是则返回YES,不是返回NO #define isiPhone5or5sor5c ([UIScreen instancesRespondToSelector:@selector(currentMode CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO) #define isiPhone6or6s ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO) 那么我只需要判断这几个值哪一个是

    10040

    iOS 卡顿监测方案总结

    __CFRunLoopDoObservers(runloop, currentMode, kCFRunLoopBeforeSources); // 4.RunLoop 触发 Source0 (非port sourceHandledThisLoop = __CFRunLoopDoSources0(runloop, currentMode, stopAfterHandle) // 5.执行被加入的block __CFRunLoopDoBlocks(runloop, currentMode); // 6.RunLoop 的线程即将进入休眠(sleep)。 __CFRunLoopDoTimers(runloop, currentMode, mach_absolute_time()) // 10.如果有dispatch到main_queue的block, , source1, msg); // 12.RunLoop 即将退出 __CFRunLoopDoObservers(rl, currentMode, kCFRunLoopExit); 我们可以看到

    42620

    iOS RunLoop的介绍

    每次调用 RunLoop 的主函数时,只能指定其中一个 Mode,这个Mode被称作 CurrentMode。如果需要切换 Mode,只能退出 Loop,再重新指定一个 Mode 进入。 if (__CFRunLoopModeIsEmpty(currentMode)) return; /// 1. 通知 Observers: RunLoop 即将进入 loop。 __CFRunLoopDoObservers(runloop, currentMode, kCFRunLoopBeforeTimers); /// 3. __CFRunLoopDoBlocks(runloop, currentMode); /// 4. 执行被加入的block __CFRunLoopDoBlocks(runloop, currentMode); /// 5.

    510100

    编码篇-学会小用宏和条件编译

    、8P #define IS_iPhone678_Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO) // 6、6s、7、8 #define IS_iPhone678 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? IS_iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? IS_iPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ?

    37520

    RunLoop

    if (__CFRunLoopModeIsEmpty(currentMode)) return; /// 1. 通知 Observers: RunLoop 即将进入 loop。 __CFRunLoopDoObservers(runloop, currentMode, kCFRunLoopBeforeTimers); /// 3. __CFRunLoopDoBlocks(runloop, currentMode); /// 4. sourceHandledThisLoop = __CFRunLoopDoSources0(runloop, currentMode, stopAfterHandle); /// 执行被加入的block __CFRunLoopDoBlocks(runloop, currentMode); /// 5.

    16220

    iOS多线程——你要知道的RunLoop都在这里你要知道的iOS多线程NSThread、GCD、NSOperation、RunLoop都在这里

    || __CFRunLoopModeIsEmpty(rl, currentMode, rl->_currentMode)) { Boolean did = false; if (currentMode ) __CFRunLoopModeUnlock(currentMode); __CFRunLoopUnlock(rl); return did ? ) __CFRunLoopDoObservers(rl, currentMode, kCFRunLoopExit); __CFRunLoopModeUnlock(currentMode __CFRunLoopDoBlocks(runloop, currentMode); /// 4. block __CFRunLoopDoBlocks(runloop, currentMode); /// 5.

    73780

    iOS开发·适配iPhone X相关的宏和方法

    是否iPhoneX YES:iPhoneX屏幕 NO:传统屏幕 #define kIs_iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) 多行逻辑判断 //是否 :传统屏幕 #define kIs_iPhoneX_test ({\ int tmp = 0;\ if ([UIScreen instancesRespondToSelector:@selector(currentMode )]) {\ if (CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size)) {

    62440

    iPhoneX Max适配

    image.png + (BOOL)isIPhoneX { return ([UIScreen instancesRespondToSelector:@selector(currentMode) CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO); } 这么判断的需要修改啦

    1.2K40

    Objective-C RunLoop 详解

    每次调用 RunLoop 的主函数时,只能指定其中一个 Mode,这个Mode被称作 CurrentMode。如果需要切换 Mode,只能退出 Loop,再重新指定一个 Mode 进入。 if (__CFRunLoopModeIsEmpty(currentMode)) return; /// 1. __CFRunLoopDoObservers(runloop, currentMode, kCFRunLoopBeforeTimers); /// 3. __CFRunLoopDoBlocks(runloop, currentMode); /// 4. 执行被加入的block __CFRunLoopDoBlocks(runloop, currentMode); /// 5.

    70580

    再谈RunLoop

    每次调用 RunLoop 的主函数时,只能指定其中一个 Mode,这个Mode被称作 CurrentMode。如果需要切换 Mode,只能退出 Loop,再重新指定一个 Mode 进入。 if (__CFRunLoopModeIsEmpty(currentMode)) return; /// 1. 通知 Observers: RunLoop 即将进入 loop。 __CFRunLoopDoObservers(runloop, currentMode, kCFRunLoopBeforeTimers); /// 3. __CFRunLoopDoBlocks(runloop, currentMode); /// 4. 执行被加入的block __CFRunLoopDoBlocks(runloop, currentMode); /// 5.

    48340

    再谈RunLoop

    每次调用 RunLoop 的主函数时,只能指定其中一个 Mode,这个Mode被称作 CurrentMode。如果需要切换 Mode,只能退出 Loop,再重新指定一个 Mode 进入。 if (__CFRunLoopModeIsEmpty(currentMode)) return; /// 1. 通知 Observers: RunLoop 即将进入 loop。 __CFRunLoopDoObservers(runloop, currentMode, kCFRunLoopBeforeTimers); /// 3. __CFRunLoopDoBlocks(runloop, currentMode); /// 4. 执行被加入的block __CFRunLoopDoBlocks(runloop, currentMode); /// 5.

    36241

    Android GPS学习 (一) :GPS 启动流程

    src/com/android/settings/location/LocationEnabler.java void setLocationMode(int mode) { final int currentMode = null) { mListener.onLocationModeChanged(currentMode, true); } return; } updateLocationMode(mContext, currentMode, mode, ActivityManager.getCurrentUser(),

    70110

    iOS:宏定义(项目初期配置)(一)

    WImageByName(@"默认") //判断是否iphoneX #define KIsiPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) //状态栏高度 #define

    67220

    RunLoop 总结:RunLoop的应用场景(一)保证线程长久存活

    } /** 子线程任务 */ - (void)subThreadOpetion { NSLog(@"启动RunLoop后--%@",[NSRunLoop currentRunLoop].currentMode 我们只需要在执行任务的时候,打印出该RunLoop的currentMode即可。 因为RunLoop执行任务是会在mode间切换,只执行该mode上的任务,每次切换到某个mode时,currentMode就会更新。 CFRunLoopRun()方法中会调用CFRunLoopRunSpecific()方法,而CFRunLoopRunSpecific()方法中有这么两行关键代码: CFRunLoopModeRef currentMode modeName, false); ......这中间还有好多逻辑代码 CFRunLoopModeRef previousMode = rl->_currentMode; rl->_currentMode = currentMode

    44841

    相关产品

    • 云服务器

      云服务器

      云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。 腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券