自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 785

转载 UIView的三个控制触摸回调的方法

cancelsTouchesInView/delaysTouchesBegan/delaysTouchesEnded(0)首先要知道的是1.这3个属性是作用于GestureRecognizers(手势识别)与触摸事件之间联系的属性。实际应用中好像很少会把它们放到一起,大多都只是运用手势识别,所以这3个属性应该很少会用到。2.对于触摸事件,window只会有一个控件来接收touch。这个控件是首先接触到touch的并且重写了触摸事件方法(一个即可)的控件3.手势识别和触摸事件是两个独立的事,只是可

2020-11-23 14:16:39 361

原创 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 1538 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 477

原创 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 1672

原创 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 201

原创 字节跳动客户端部门直招

先自我介绍一下,我是19届广工毕业生,也是通过????客的内推进来的头条深研客户端团队,做过Android开发、iOS开发、跨平台开发,可以说头条是一个非常适合应届生成长的平台,所以欢迎大家向我投递简历,想要了解更多信息或者客户端方向、学习上的交流,都可以加我的微信: mominlive520下面进入正题:【招*要求】接受校招和社招不需要客户端开发经验和项目经验,部门提供入职培训,包学包会...

2020-03-23 15:24:01 624

原创 利用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 5924

原创 NSNotification 你不知道的使用技巧

NSNotification使用姿势基本使用发送通知:- (void)postNotificationName:(NSNotificationName)aName object:(nullable id)anObject userInfo:(nullable NSDictionary *)aUserInfo;aName:通知名称anObject:发送者(sender)aUserIn...

2019-09-23 18:37:43 359

原创 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 1137

原创 iOS触摸优先级&&多手势处理

一张图说明iOS触摸优先级手势识别器 -> 响应链的 onTouchBegin、onTouchMoved…若手势识别器已经处理了,那么不会传递到响应链,相应的onTouchBegin、onTouchMoved…也不会被调用多个手势的处理通过设置gestureRecognizer的delegate,delegate实现:- (BOOL)gestureRecognizer:(...

2019-09-20 20:20:18 3251

转载 【转载】NSOperation

转自:https://www.jianshu.com/p/73b5f5dda06a同步与异步函数:1.1 同步函数:NSOperation中,任务的start方法是同步函数,start是让任务在当前线程中同步串行执行,并且调用内部的main方法a 如果要让任务在当前线程执行,就直接创建任务并start,而不是加入到队列中1.2 异步函数:NSOperationQueue都是异步函数。...

2019-08-13 17:22:44 178

原创 iOS crash分类

iOS crash分类OC ExceptionObjective-C层的异常。捕获方法:通过NSSetUncaughtExceptionHandler来设置处理器。Mach Exception捕获方法:task_set_exception_ports() 创建子线程、创建异常监听端口。系统内核(mach)层面的异常。最终转成SIGABRT。总结几个常见的Mach异常(Excepti...

2019-08-07 10:12:44 747

原创 汇编相关

栈栈是从高地址向低地址扩展的。ebp指向栈的底部esp指向栈的顶部入栈操作:push eax;等于ebp = ebp - 4; eax->[ebp] (把eax的值存放到ebp位置上)出栈操作:pop eax;等于[ebp]->eax; ebp = ebp + 4;函数调用调用入栈:返回出栈:...

2019-07-30 20:59:02 145

原创 iOS 异常处理

自定义异常- (void) willCrash { NSDictionary *userInfo = @{@"age":@12, @"text":@"momingqi is man."}; NSException *exception = [NSException exceptionWithName:@"自定义异常" reason:@"自定义异常原因" userInfo:user...

2019-07-30 17:30:53 487

原创 Objective-C 单例模式的实现

OC中实现单例模式最简单的写法,存在线程安全问题:@implementation Singleton+ (instancetype)shareInstance { static Singleton *instance = nil; if (! instance) { instance = [[Singleton alloc] init]; } ...

2019-07-22 12:47:17 475

原创 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 2383

原创 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 509

原创 iOS文件存储学习

//// ViewController.m// MakeStrong//// Created by momingqi on 2019/7/15.// Copyright © 2019 momingqi. All rights reserved.//#import "ViewController.h"#import <sqlite3.h>#import &lt...

2019-07-16 18:45:15 132

原创 sizeToFits和sizeThatFits

sizeToFits和sizeThatFitssizeToFitsnumberOfLines = 1 的时候调用 sizeToFit() 只会修改 label 的 widthnumberOfLines != 1 的时候调用 sizeToFit() 的时候会在第一调用的时候确认 label 的 width。如果 调用 sizeToFit() 得到的宽度小于 label.bo...

2019-07-15 10:29:20 398

原创 CGContextSaveGState作用

先说结论:CGContextSaveGState是保存当前的上下文,可以理解为保存了当前的绘制环境,比如画笔颜色、画笔大小等信息。实验:- (void)drawRect:(CGRect)rect { CGContextRef ctx = UIGraphicsGetCurrentContext(); //设置蓝色画笔 CGContextSetFillColorWit...

2019-07-14 21:02:36 406 1

原创 iOS 网络编程(NSUrlSession)

NSUrlSession提供了四大任务:DataTask 数据请求DownloadTask 文件下载,获取进度、断点续传UploadTask 文件上传StreamTask TCP链接(iOS 9+)

2019-07-14 20:10:43 194

原创 iOSView绘制相关

iOS绘图框架iOS的绘图框架有多种,我们平常最常用的就是UIKit,其底层是依赖CoreGraphics实现的,而且绝大多数的图形界面也都是由UIKit完成,并且UIImage、NSString、UIBezierPath、UIColor等都知道如何绘制自己,也提供了一些方法来满足我们常用的绘图需求。除了UIKit,还有CoreGraphics、Core Animation,Core Imag...

2019-07-14 18:44:07 482

原创 Objective-C Block原理

Block是将函数及其执行上下文封装起来的对象

2019-07-11 15:01:51 160

原创 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 324

转载 iOS多线程

https://www.cnblogs.com/weiming4219/p/7649661.html

2019-07-09 10:23:28 120

原创 Objective-C入门(二)

类别(Category)类别可以为原有类增加方法。用法:@interface ClassName(CategoryName)@end示例://NSStringAdditions.h@interface NSString (NSStringAdditions)+ (NSString *) getAuthorNameString;@end//NSStringAdditions.m...

2019-07-04 18:20:10 184

原创 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 756

原创 Drawable和stateSet的关系

Drawable和stateSet的关系state实际上就是一个整型数组,你可以追加各种state,比如state_press、state_press。用xml生成Drawable&lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&gt; &lt;item android:state_chec...

2019-03-08 11:40:07 918

原创 ARouter使用

ARouter使用简介ARouter是阿里巴巴出品的路由框架,最佳实践是作为组件化中,不同组件之间页面跳转的中间件,可以有效解耦跳转方和目标页。配置模块下的build.gradle,比如app/build.gradle:defaultConfig { javaCompileOptions { annotationProcessorOptions {...

2019-03-03 21:06:34 232

原创 KeyEvent事件的传递

KeyEvent事件的传递最近解bug的时候遇到这么一个case,就是用户点击导航栏的返回键时,onBackPress并没有执行,再进一步调试发现onKeyDown也没有执行到。所以下面我会尽可能从代码层面分析KeyEvent事件的传递,而一些涉及WMS,IME的就不去深入分析了。KeyEvent主要包括手机导航键Back、Home、Task,也有可能是连接了外置键盘的键盘键。onBac...

2019-01-16 14:59:10 2504

原创 Linux epoll机制

阻塞和非阻塞轮询当缓冲区为空的时候我们需要阻塞起来(线程切换消耗资源),或者不断地进行轮询(消耗CPU)。缺点阻塞的缺点是:只能处理一个线程的IO流。非阻塞轮训可以同时处理多个流,我们只要不停的把所有流从头到尾问一遍,又从头开始。这样就可以处理多个流了,但这样的做法显然不好,因为如果所有的流都没有数据,那么只会白白浪费CPU。SELECT O(n)可以避免轮询带来的CPU空转。...

2018-10-31 01:29:07 240

原创 Activity onSaveInstanceState的调用时机

Activity onSaveInstanceState的调用时机1、调起“最近任务”,然后杀掉onPause -&gt; onSaveInstanceState -&gt; onStoponPause()是保证执行的;而onDestory则会由于进程被直接杀死而不执行。2、从活动A,打开活动BOnSaveInstanceState调用时机:当系统觉得你这个活动在onPause...

2018-09-26 10:35:56 322

原创 Java算术右移和逻辑右移

&gt;&gt; 是算术右移运算符,算术右移左边空位补上符号位 &gt;&gt;&gt; 是逻辑右移,也叫无符号右移,左边空位补0例: -4 &gt;&gt; 1 = -2 -4 &gt;&gt;&gt; 1 = 2147483646负数用补码表示(非符号位取反加一),左边第一位是符号位,1代表负数;当逻辑右移的时候,符号位被0填充,负数变成正数:而算术右移,相当于 -4 /...

2018-09-12 22:17:13 990

原创 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 195

原创 Java内存模型与线程

线程与内存CPU内存模型: JVM内存模型: Java中线程只能对工作内存进行操作,保证线程中使用到的变量都在工作内存中存在一份拷贝。Java中的主内存主要对应于Java堆中的对象实例部分,而工作内存则对应于虚拟机栈中的部分区域。虚拟机可能会让工作内存优先存储与寄存器和高速缓存中,以获得更高的运行速度。内存交互lock指令,将主内存的变量标志为线程独占的状态。...

2018-09-10 14:23:47 149

转载 【转】Java内存屏障和可见性

Java内存屏障和可见性引言在多线程编程中,有的时候会看见如下的代码public class task{private boolean success;public void getResult(){ while(success=...

2018-09-10 12:22:25 345

原创 Android Activity的四种启动模式

启动模式当活动被复用的时候,onNewIntent会被调用。1.standard每次开启一个活动都创建一个实例,并且调用生命周期的方法2. singleTop栈顶复用模式 如果要开启的活动已经处于任务栈栈顶,就不会创建实例3. singleTask检测整个任务栈中是否有需要启动的活动,如果有,则把该活动以上的活动销毁,该活动就处于栈顶了4.single...

2018-09-09 21:45:42 147

原创 Fragment生命周期和Activity通讯方法

Fragment生命周期1. Fragment为什么被成为第五大组件android3.0引入,为了兼容大屏幕。Fragment有自己的生命周期可以动态加载到acitivty中两种加载方式1)静态加载,通过布局文件 2)动态加载,通过FragmentManagerFragmentPagerAdapter和FragmentStatePagerAdaper区别F...

2018-09-09 20:36:57 261

原创 Android自定义ViewGroup实现侧滑菜单

自定义控件之侧滑菜单SlidingViewGroup本文主要介绍实现一个侧滑菜单的过程。利用ViewGroup来实现,并且具有强扩展性,用户可以自定义主要内容视图和侧滑菜单视图,并妥善处理了父View跟子View的滑动冲突问题。灵感来源与需求灵感主要来自TIM的聊天信息的滑动菜单: 需求: 1. ViewGroup允许用户放入两个视图,一个作为内容视图,一个作为菜单视图。 ...

2018-08-24 01:00:36 363 1

PK后台扫描工具

PK后台扫描工具(网络攻防必备),多线程,急速扫描,亲测有效。

2018-07-11

BitTorrent

种子下载工具,可以下载.torrent文件,具体使用请下载。

2018-07-11

MP3文件隐写工具

MP3文件隐写工具,可以对隐写内容加密。就是这样啊。使用简单。

2017-10-20

压缩包爆破解密工具(7z、rar、zip)

压缩包内包含三个工具,分别可以用来爆破解密7z压缩包、rar压缩包和zip压缩包。

2017-10-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除