- 博客(100)
- 资源 (4)
- 收藏
- 关注
原创 UIButton、UIGestureRecognizer和hitTest
UIButton、UIGestureRecognizer和hitTest概述需求现状解决方案其他userInteractionEnable和hitTest的关系概述父视图是一个普通的UIView,添加了点击手势UITapGestureRecognizer;UIButton可以点击UIView的userInteractionEnable = YES(默认值),无手势UIBotton和UIView都是GeastureContainerView的子View需求当点击UIView时,既不响应UI
2020-12-03 00:52:15 861
转载 UIView的三个控制触摸回调的方法
cancelsTouchesInView/delaysTouchesBegan/delaysTouchesEnded(0)首先要知道的是1.这3个属性是作用于GestureRecognizers(手势识别)与触摸事件之间联系的属性。实际应用中好像很少会把它们放到一起,大多都只是运用手势识别,所以这3个属性应该很少会用到。2.对于触摸事件,window只会有一个控件来接收touch。这个控件是首先接触到touch的并且重写了触摸事件方法(一个即可)的控件3.手势识别和触摸事件是两个独立的事,只是可
2020-11-23 14:16:39 419
原创 iOS使用系统提供的高斯模糊组件
UIBlurEffectUIBlurEffect will provide a blur that appears to have been applied to the content layered behind the UIVisualEffectView. Views added to the contentView of a blur visual effect are not blurred themselves.UIBlurEffect需要结合UIVisualEffectView来使
2020-10-26 21:40:15 1683 4
原创 XCode单元测试简单示例
简单示例创建工程的时候勾选上☑️Include TestsXCode会自动创建Test的两个Target打开.m文件,自动生成了几个方法,这几个方法的调用顺序如下:2020-10-26 11:04:49.963661+0800 同朕checkcheck[89934:2711233] ---setUp2020-10-26 11:04:49.963781+0800 同朕checkcheck[89934:2711233] ---testPerformanceExample2020-10-2
2020-10-26 14:09:15 542
原创 Swift苹果官方教程文档阅读和学习
入门文档Guide Book:https://docs.swift.org/swift-book/LanguageGuide/TheBasics.htmlSwift Feature: https://developer.apple.com/swift/问题记录Swift Feature值类型And Swift heavily leverages value types, especially for commonly used types like Arrays and Diction
2020-08-05 14:21:19 1782
原创 iOS bounds备忘
背景:在系统状态栏下方加一个UICollectionView,发现UICollectionView自动向下偏移了20px,观察布局发现UICollectionView.bounds.y = -20。原因:UICollectionView所在VC少写self.automaticallyAdjustsScrollViewInsets = NO; 被系统搞了collectionView.bounds.y = -20https://blog.csdn.net/mad1989/article/details/87
2020-07-27 11:10:18 247
原创 字节跳动客户端部门直招
先自我介绍一下,我是19届广工毕业生,也是通过????客的内推进来的头条深研客户端团队,做过Android开发、iOS开发、跨平台开发,可以说头条是一个非常适合应届生成长的平台,所以欢迎大家向我投递简历,想要了解更多信息或者客户端方向、学习上的交流,都可以加我的微信: mominlive520下面进入正题:【招*要求】接受校招和社招不需要客户端开发经验和项目经验,部门提供入职培训,包学包会...
2020-03-23 15:24:01 685
原创 利用XCode进行iOS模拟定位
利用XCode进行iOS模拟定位打开项目的scheme配置在options中打开Allow Location Simulation开关,在Default Location中有常用的地点供模拟手动编写gpx后缀的文件在这个网站查询对应地点的经纬度: https://jingweidu.51240.com/,填入下面的xml文件中location.gpx<?x...
2019-10-30 15:51:54 6296
原创 NSNotification 你不知道的使用技巧
NSNotification使用姿势基本使用发送通知:- (void)postNotificationName:(NSNotificationName)aName object:(nullable id)anObject userInfo:(nullable NSDictionary *)aUserInfo;aName:通知名称anObject:发送者(sender)aUserIn...
2019-09-23 18:37:43 446
原创 iOS Runtime之isa指针探索与object_setClass的实质
iOS Runtime之isa指针探索与object_setClass的实质探索isa的指向测试代码:@interface Company : NSObject@property (assign, nonatomic) int cid;@end Company *company = [Company new]; company.cid = 255; NSLog(...
2019-09-23 18:36:51 1200
原创 iOS触摸优先级&&多手势处理
一张图说明iOS触摸优先级手势识别器 -> 响应链的 onTouchBegin、onTouchMoved…若手势识别器已经处理了,那么不会传递到响应链,相应的onTouchBegin、onTouchMoved…也不会被调用多个手势的处理通过设置gestureRecognizer的delegate,delegate实现:- (BOOL)gestureRecognizer:(...
2019-09-20 20:20:18 3481
转载 【转载】NSOperation
转自:https://www.jianshu.com/p/73b5f5dda06a同步与异步函数:1.1 同步函数:NSOperation中,任务的start方法是同步函数,start是让任务在当前线程中同步串行执行,并且调用内部的main方法a 如果要让任务在当前线程执行,就直接创建任务并start,而不是加入到队列中1.2 异步函数:NSOperationQueue都是异步函数。...
2019-08-13 17:22:44 208
原创 iOS crash分类
iOS crash分类OC ExceptionObjective-C层的异常。捕获方法:通过NSSetUncaughtExceptionHandler来设置处理器。Mach Exception捕获方法:task_set_exception_ports() 创建子线程、创建异常监听端口。系统内核(mach)层面的异常。最终转成SIGABRT。总结几个常见的Mach异常(Excepti...
2019-08-07 10:12:44 796
原创 汇编相关
栈栈是从高地址向低地址扩展的。ebp指向栈的底部esp指向栈的顶部入栈操作:push eax;等于ebp = ebp - 4; eax->[ebp] (把eax的值存放到ebp位置上)出栈操作:pop eax;等于[ebp]->eax; ebp = ebp + 4;函数调用调用入栈:返回出栈:...
2019-07-30 20:59:02 184
原创 iOS 异常处理
自定义异常- (void) willCrash { NSDictionary *userInfo = @{@"age":@12, @"text":@"momingqi is man."}; NSException *exception = [NSException exceptionWithName:@"自定义异常" reason:@"自定义异常原因" userInfo:user...
2019-07-30 17:30:53 552
原创 Objective-C 单例模式的实现
OC中实现单例模式最简单的写法,存在线程安全问题:@implementation Singleton+ (instancetype)shareInstance { static Singleton *instance = nil; if (! instance) { instance = [[Singleton alloc] init]; } ...
2019-07-22 12:47:17 522
原创 Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)的崩溃原因
崩溃场景在学习iOS多线程的时候,编写了一个demo:dispatch_queue_t queue = dispatch_queue_create("gcd_test_label", DISPATCH_QUEUE_CONCURRENT); [queue addObserver:self forKeyPath:@"isExecuting" options:NSKeyValueObserv...
2019-07-20 23:45:16 2480
原创 iOS KVO和KVC介绍
iOS KVO和KVC介绍KVO和KVC都是基于对NSObject的扩展来实现的,所有继承于NSObject的子类都能使用KVO和KVC。用来测试的model:@interface User : NSObject@property (assign, nonatomic) NSInteger uid;@property (copy, nonatomic) NSString *name;@...
2019-07-19 15:49:05 559
原创 iOS文件存储学习
//// ViewController.m// MakeStrong//// Created by momingqi on 2019/7/15.// Copyright © 2019 momingqi. All rights reserved.//#import "ViewController.h"#import <sqlite3.h>#import <...
2019-07-16 18:45:15 167
原创 sizeToFits和sizeThatFits
sizeToFits和sizeThatFitssizeToFitsnumberOfLines = 1 的时候调用 sizeToFit() 只会修改 label 的 widthnumberOfLines != 1 的时候调用 sizeToFit() 的时候会在第一调用的时候确认 label 的 width。如果 调用 sizeToFit() 得到的宽度小于 label.bo...
2019-07-15 10:29:20 464
原创 CGContextSaveGState作用
先说结论:CGContextSaveGState是保存当前的上下文,可以理解为保存了当前的绘制环境,比如画笔颜色、画笔大小等信息。实验:- (void)drawRect:(CGRect)rect { CGContextRef ctx = UIGraphicsGetCurrentContext(); //设置蓝色画笔 CGContextSetFillColorWit...
2019-07-14 21:02:36 463 1
原创 iOS 网络编程(NSUrlSession)
NSUrlSession提供了四大任务:DataTask 数据请求DownloadTask 文件下载,获取进度、断点续传UploadTask 文件上传StreamTask TCP链接(iOS 9+)
2019-07-14 20:10:43 229
原创 iOSView绘制相关
iOS绘图框架iOS的绘图框架有多种,我们平常最常用的就是UIKit,其底层是依赖CoreGraphics实现的,而且绝大多数的图形界面也都是由UIKit完成,并且UIImage、NSString、UIBezierPath、UIColor等都知道如何绘制自己,也提供了一些方法来满足我们常用的绘图需求。除了UIKit,还有CoreGraphics、Core Animation,Core Imag...
2019-07-14 18:44:07 551
原创 iOS-CALayer
iOS-CALayerCALayer是图层的意思。每个View都有一个根图层。图层可以添加子图层,子图层覆盖在父图层之上- (void)viewDidLoad { self.view.backgroundColor =[UIColor whiteColor]; UIView *view = [[UIView alloc] initWithFrame:self.view....
2019-07-10 20:10:48 389
原创 Objective-C入门(二)
类别(Category)类别可以为原有类增加方法。用法:@interface ClassName(CategoryName)@end示例://NSStringAdditions.h@interface NSString (NSStringAdditions)+ (NSString *) getAuthorNameString;@end//NSStringAdditions.m...
2019-07-04 18:20:10 220
原创 Objective-C入门
介绍Objective-C是C语言的严格超集,也就是在OC中使用C语言的语法是合法的。OC原意就是在C语言上加入面向对象的特性。文件扩展名:.h | .m | .mm。.m可以包含oc和c代码;.mm可以包含oc/c/C++代码。部分C语言的合法代码是在oc中的意义不一定相同。消息传递模型在OC中,可以用消息传递来描述对象之间的方法调用。调用方法视为给对象发送消息。所有方法视为...
2019-07-04 11:06:56 891
原创 Drawable和stateSet的关系
Drawable和stateSet的关系state实际上就是一个整型数组,你可以追加各种state,比如state_press、state_press。用xml生成Drawable<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_chec...
2019-03-08 11:40:07 977
原创 ARouter使用
ARouter使用简介ARouter是阿里巴巴出品的路由框架,最佳实践是作为组件化中,不同组件之间页面跳转的中间件,可以有效解耦跳转方和目标页。配置模块下的build.gradle,比如app/build.gradle:defaultConfig { javaCompileOptions { annotationProcessorOptions {...
2019-03-03 21:06:34 268
原创 KeyEvent事件的传递
KeyEvent事件的传递最近解bug的时候遇到这么一个case,就是用户点击导航栏的返回键时,onBackPress并没有执行,再进一步调试发现onKeyDown也没有执行到。所以下面我会尽可能从代码层面分析KeyEvent事件的传递,而一些涉及WMS,IME的就不去深入分析了。KeyEvent主要包括手机导航键Back、Home、Task,也有可能是连接了外置键盘的键盘键。onBac...
2019-01-16 14:59:10 2607
原创 Linux epoll机制
阻塞和非阻塞轮询当缓冲区为空的时候我们需要阻塞起来(线程切换消耗资源),或者不断地进行轮询(消耗CPU)。缺点阻塞的缺点是:只能处理一个线程的IO流。非阻塞轮训可以同时处理多个流,我们只要不停的把所有流从头到尾问一遍,又从头开始。这样就可以处理多个流了,但这样的做法显然不好,因为如果所有的流都没有数据,那么只会白白浪费CPU。SELECT O(n)可以避免轮询带来的CPU空转。...
2018-10-31 01:29:07 277
原创 Activity onSaveInstanceState的调用时机
Activity onSaveInstanceState的调用时机1、调起“最近任务”,然后杀掉onPause -> onSaveInstanceState -> onStoponPause()是保证执行的;而onDestory则会由于进程被直接杀死而不执行。2、从活动A,打开活动BOnSaveInstanceState调用时机:当系统觉得你这个活动在onPause...
2018-09-26 10:35:56 371
原创 Java算术右移和逻辑右移
>> 是算术右移运算符,算术右移左边空位补上符号位 >>> 是逻辑右移,也叫无符号右移,左边空位补0例: -4 >> 1 = -2 -4 >>> 1 = 2147483646负数用补码表示(非符号位取反加一),左边第一位是符号位,1代表负数;当逻辑右移的时候,符号位被0填充,负数变成正数:而算术右移,相当于 -4 /...
2018-09-12 22:17:13 1046
原创 01背包问题
背包问题就是:有一堆物品,物品有重量(weight)和价值(value)的属性。求给定背包的容量,最大能容纳的物品总价值。 编号 重量 价值 1 2 3 2 3 4 3 4 5 4 5 6最大能装的01背包每件物品只能装0件或1件。二维数组解法:1)定义一个物品数背包容量的二维数组,...
2018-09-11 23:01:40 221
原创 Java内存模型与线程
线程与内存CPU内存模型: JVM内存模型: Java中线程只能对工作内存进行操作,保证线程中使用到的变量都在工作内存中存在一份拷贝。Java中的主内存主要对应于Java堆中的对象实例部分,而工作内存则对应于虚拟机栈中的部分区域。虚拟机可能会让工作内存优先存储与寄存器和高速缓存中,以获得更高的运行速度。内存交互lock指令,将主内存的变量标志为线程独占的状态。...
2018-09-10 14:23:47 176
转载 【转】Java内存屏障和可见性
Java内存屏障和可见性引言在多线程编程中,有的时候会看见如下的代码public class task{private boolean success;public void getResult(){ while(success=...
2018-09-10 12:22:25 382
原创 Android Activity的四种启动模式
启动模式当活动被复用的时候,onNewIntent会被调用。1.standard每次开启一个活动都创建一个实例,并且调用生命周期的方法2. singleTop栈顶复用模式 如果要开启的活动已经处于任务栈栈顶,就不会创建实例3. singleTask检测整个任务栈中是否有需要启动的活动,如果有,则把该活动以上的活动销毁,该活动就处于栈顶了4.single...
2018-09-09 21:45:42 172
原创 Fragment生命周期和Activity通讯方法
Fragment生命周期1. Fragment为什么被成为第五大组件android3.0引入,为了兼容大屏幕。Fragment有自己的生命周期可以动态加载到acitivty中两种加载方式1)静态加载,通过布局文件 2)动态加载,通过FragmentManagerFragmentPagerAdapter和FragmentStatePagerAdaper区别F...
2018-09-09 20:36:57 287
原创 Android自定义ViewGroup实现侧滑菜单
自定义控件之侧滑菜单SlidingViewGroup本文主要介绍实现一个侧滑菜单的过程。利用ViewGroup来实现,并且具有强扩展性,用户可以自定义主要内容视图和侧滑菜单视图,并妥善处理了父View跟子View的滑动冲突问题。灵感来源与需求灵感主要来自TIM的聊天信息的滑动菜单: 需求: 1. ViewGroup允许用户放入两个视图,一个作为内容视图,一个作为菜单视图。 ...
2018-08-24 01:00:36 404 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人