自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

铭记_

如果你发现了通向成功的道路,那么请不要放弃!

  • 博客(183)
  • 资源 (8)
  • 收藏
  • 关注

原创 iOS开发中使用Masonry布局实现动画原理

一、案例:我们这里初始按钮是一个很小的按钮,点击就不断放大,最大就放大到全屏幕。核心代码如下:@interface TotalUpdateController ()@property (nonatomic, strong) UIView *purpleView;@property (nonatomic, strong) UIView *orangeView;@property (nonatomic, assign) BOOL isExpaned;@end@implementat

2021-03-24 14:52:23 1926

原创 iOS14+中广告标识(idfa)获取方式

1、什么是IDFA假如没有网络身份证,那么每个商家(App)只能基于自己的账号体系标识用户,并记录用户的行为。而有了统一的网络身份证之后,各个商家之间的数据就可以打通了,天猫不仅知道用户A在淘宝系的购物数据,也能了解到该用户在社交网络的行为,以及旅游的喜好,等等。可以想象一下,随着时间的推移,用户在移动端的行为数据越积越多,用户就会变得越来越像透明人,除非换手机,几乎没有任何办法去抵御这个科技带来的负面效应。只有一个例外,苹果!苹果的特立独行体现在诸多方面,用户隐私就是其中之一。IDFA 是

2021-03-17 17:18:31 20928 3

转载 iOS Zombie Objects(僵尸对象)原理探索

1. Zombie Object 有什么用僵尸对象一种用来检测内存错误(EXC_BAD_ACCESS)的对象,它可以捕获任何对尝试访问坏内存的调用。 如果给僵尸对象发送消息时,那么将在运行期间崩溃和输出错误日志。通过日志可以定位到野指针对象调用的方法和类名。2. 如何开启Zombie Object检测在Xcode中设置Edit Scheme -> Diagnostics -> Zombie Objects3. 开启Zombie Object检测后,对象调用dealloc方法会发生

2021-03-15 14:48:36 1491

转载 iOS中为什么必须在主线程操作UI

在开发过程中,我们或多或少会不经意在后台线程中调用了UIKit框架的内容,可能是在网络回调时直接imageView.image = anImage,也有可能是不小心在后台线程中调用了UIApplication.sharedApplication。而这个时候编译器会报出一个runtime错误,我们也会迅速的对其进行修正。但仔细去思考,究竟为什么一定要在主线程操作UI呢?如果在后台线程对UI进行操作会发生什么?在后台线程对UI进行操作不是可以更好的避免卡顿吗?这篇文章就是基于这样一些疑问而产生的。太长

2021-03-01 17:43:52 887

转载 手撸LRU算法C++实现

LRU 算法就是一种缓存淘汰策略,计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新内容腾位置。但问题是,删除哪些内容呢?我们肯定希望删掉哪些没什么用的缓存,而把有用的数据继续留在缓存里,方便之后继续使用。那么,什么样的数据,我们判定为「有用的」的数据呢?LRU 的全称是 Least Recently Used,也就是说我们认为最近使用过的数据应该是是「有用的」,很久都没用过的数据应该是无用的,内存满了就优先删那些很久没用过的数据。举个简单的例子,安卓手机都可以把软件放到后台运行,比如我先后打

2021-02-25 15:27:58 533 2

转载 iOS 图像渲染过程解析

我们先假设这样一个场景:就是点击一个按键,然后实现一张图片的动画移动。场景.gif代码如下:#import "FJFNineViewController.h"@interface FJFNineViewController ()// boxImageView@property (nonatomic, strong) UIImageView *boxImageView;@end@implementation FJFNineViewController- (void)v.

2020-12-31 15:14:48 1020

原创 IOS开发关于容器控制器的一些思考

背景在IOS开发中,容器类视图控制器有UINavigationController、UITabBarController以及UISplitViewcontroller这么三种。当我们自己要去实现一个视图控制器容器的时候,我们需要做以下操作:1、我们需要创建一个subViewController2、调用[self addChildViewController:self.controller1];3、执行[self didMoveToParentViewController:self.con

2020-12-15 21:01:38 327

原创 IOS开发解决线上bug又爱又恨的一天

研究线上bug,bugly地址:https://bugly.qq.com/v2/crash-reporting/crashes/e4cca56be9/520445?pid=2又是潦草的一天,遇到问题没有先猜想(思考)上来就干,最后细节的东西了解了一大堆,毫无作用,到了晚上又过了一遍bugly的流程,5s解决问题,哈哈,我TM有点想笑,一整天干了个蛇啊!下面亲身记录下今天这一天,真TM牛X。早上来到公司,包哥抛给一个线上bug,说了一大堆我也没听,核心就是你看看这是什么造成的,去解决了。我当然也是义无

2020-12-11 21:50:45 552 1

原创 IOS开发底层dealloc释放细节探究

大家都知道ARC后是不能显示地调用dealloc方法,但是可以重载此方法。突然考虑到如果父类有属性需要释放,而子类重写了此方法,且重写子类dealloc时不能调用[super dealloc]会不会把父类的方法覆盖了写了个测试类@interface ClassA:NSObject @end @implementation ClassA-(void)dealloc{ NSLog(@"dealloc ClassA");}@end @interface Class

2020-12-10 17:05:36 773

转载 KVO底层原理探究

问题iOS用什么方式实现对一个对象的KVO?(KVO的本质是什么?) 如何手动触发KVO首先需要了解KVO基本使用,KVO的全称 Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变。- (void)viewDidLoad { [super viewDidLoad]; Person *p1 = [[Person alloc] init]; Person *p2 = [[Person alloc] init]; p1.a.

2020-12-10 15:37:17 113

转载 iOS触摸事件全家桶

好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是已经被响应链、手势、target-action这一系列响应触摸事件的方式折腾到不会打Hello World?现在 是时候带你上分了~ (强行YY完毕)本文主要讲解iOS触摸事件的一系列机制,涉及的问题大致包括:触摸事件由触屏生成后如何传递到当前应用? 应用接收触摸事件后如何寻找最佳响应者?实现原理? 触摸事件如何沿着响应链流动? 响应链、手势识别器、UIControl之.

2020-12-08 23:31:13 246

转载 iOS底层学习 - 深入RunLoop

RunLoop这个名词对于iOS开发来说应该是一个听腻了的词汇,而且只知其一不知其二,本篇章就来再深入复习一下RunLoopRunLoop简介什么是RunLoop一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线程能随时处理事件但并不退出,这种模型通常被称作 Event Loop。 Event Loop 在很多系统和框架里都有实现,比如 Node.js 的事件处理,比如 Windows 程序的消息循环,再比如 OSX/iOS 里的 RunLoop 。实

2020-12-08 17:47:00 339

原创 IOS端骨架屏加载动画的研究以及TABAnimation三方库的研究

1、骨架屏简介:骨架屏 Skeleton Screen Loading 也叫加载占位图,是近年流行的加载控件,通常表现形式是在界面上待加载区域填充灰色的占位图,与线框图的效果非常相似。Skeleton Screen就是在页面数据尚未加载前先给用户展示出页面的大致结构,直到请求数据返回后再渲染页面,补充进需要显示的数据内容。相比于之前的Loading动画,骨架屏页面更容易让用户产生一种错觉,页面快加载完了。优点:预加载界面大致结构,提高用户体验。缺点:对于一些复杂的UI适配难度比较大。.

2020-12-08 15:26:45 1856

原创 crash分析记录

目录由一个问题说起:1、通过设备直接获取崩溃日志2、使用Xcode从设备获取崩溃日志3、dSYM符号集4、利用dSYM解析符号集由一个问题说起:在开发阶段,在使用ucardebug的过程中突然闪退,因为这个时候我的手机是没有处于调试中的,所以xcode不会把奔溃堆栈打出来,但这个奔溃确实是出现了,怎么处理?经过研究,发现此时获取到奔溃信息的途径有这么2种:1、通过设备直接获取崩溃日志1)打开设置->隐私->分析->分析数据,在其中找到你想要的应.

2020-12-07 18:21:02 1006

原创 IOS实现重签名实操

重签是把已发布/未发布的包重新签名为自己的证书和签名,关键就是替换ipa内的证书和描述文件。手动签名可以研读这篇文章----IOS重签名原理主要通过codesign命令完成。值得说明的是:我们要想对ipa进行重签名,那么这个ipa包一定是未被加密过的,如何查看是否被加密过?使用如下命令:因为重签名是替换原有的签名(不了解的可以研读这篇文章:https://blog.csdn.net/lwb102063/article/details/110661830),所以我么这里需要准备如下文件,来替换原来

2020-12-06 19:58:02 625

原创 获取ipa安装包的最新方式

获取IPA包的之前我们可以借助PP助手来获取越狱或者非越狱后的IPA安装包,但现在PP助手已经凉凉了,不过我们还是有其他的方式可以获取到IPA包的---《Apple Configurator 2》;这款应用我们可以直接在Apple Store上进行下载,https://apps.apple.com/cn/app/apple-configurator-2/id1037126344?mt=12,下面说一下如何获取官方的IPA包:以下步骤为转载内容:原文地址1.首先下载一个《Apple Configu

2020-12-06 16:06:10 27876 6

原创 彻底搞懂IOS签名机制

目录一、加密/解密1、对称加密:2、非对称加密:3、秘钥配送问题解答4、中间人攻击二、数字签名1、单向散列函数2、数字签名三、数字证书一、加密/解密 常见的加密解密算法分为“对称加密”和“非对称加密”两种。1、对称加密: 通信双方共享同一个秘钥,发收信双方要想进行加密通信,都使用这个密钥对数据进行加密和解密。常见的基于“对称密钥”的加密算法主要有DES、3DES(TripleDES)、AES、RC2、RC4、RC5...

2020-12-04 17:41:31 295

转载 Category的本质

iOS底层原理总结 - Category的本质面试题Category的实现原理,以及Category为什么只能加方法不能加属性。 Category中有load方法吗?load方法是什么时候调用的?load 方法能继承吗? load、initialize的区别,以及它们在category重写的时候的调用的次序。Category的本质首先我们写一段简单的代码,之后的分析都基于这段代码。Presen类 // Presen.h#import <Foundation/Found.

2020-12-04 09:09:59 284

转载 探寻Block本质(二)

block对对象变量的捕获block一般使用过程中都是对对象变量的捕获,那么对象变量的捕获同基本数据类型变量相同吗?查看一下代码思考:当在block中访问的为对象类型时,对象什么时候会销毁?typedef void (^Block)(void);int main(int argc, const char * argv[]) { @autoreleasepool { Block block; { Person *pers...

2020-12-02 18:32:49 111

转载 探寻block的本质(一)

面试题block的原理是怎样的?本质是什么? __block的作用是什么?有什么使用注意点? block的属性修饰词为什么是copy?使用block有哪些使用注意? block在修改NSMutableArray,需不需要添加__block?首先对block有一个基本的认识block本质上也是一个oc对象,他内部也有一个isa指针。block是封装了函数调用以及函数调用环境的OC对象。探寻block的本质首先写一个简单的blockint main(int argc, const.

2020-12-02 17:18:14 343

原创 IOS逆向需用到的工具汇总

1、Mac 上自带的一些命令工具file:查看Mach-O的文件类型file 文件路径otool:查看Mach-O特定部分和段的内容otool -L Mach-O文件 # 查看当前 Mach-O 文件的动态链接库。lipo:常用于多架构Mach-O文件的处理查看架构信息:lipo -info 文件路径 导出某种特定架构:lipo 文件路径 -thin 架构类型 -output 输出文件路径 合并多种架构:lipo 文件路径1 文件路径2 -output 输出文件路径2、

2020-12-01 09:53:10 1535

转载 machOView编译源码运行报错解决方案

转载地址:https://www.jianshu.com/p/13133cc0a8fastring can't find1、缺少c++文件 地址 按照说明操作2、target --> build Phases --> Link Binary 添加libc++.tbd3、target --> build setting 按图示设置截屏2020-10-28 17.34.49.pngmacOS no findtarget --> build setting.

2020-11-25 17:16:57 350

原创 探寻Class的本质

iOS底层原理总结 - 探寻Class的本质对小码哥底层班视频学习的总结与记录。面试题部分,通过对面试题的分析探索问题的本质内容。Class的本质我们知道不管是类对象还是元类对象,类型都是Class,class和mete-class的底层都是objc_class结构体的指针,内存中就是结构体,本章来探寻Class的本质。Class objectClass = [NSObject class]; Class objectMetaClass = object_getClass(

2020-11-12 22:58:16 139

原创 探寻OC对象的本质

iOS底层原理总结第一天 - 探寻OC对象的本质对小码哥底层班视频学习的总结与记录。面试题部分,通过对面试题的分析探索问题的本质内容。面试题:一个NSObject对象占用多少内存?探寻OC对象的本质,我们平时编写的Objective-C代码,底层实现其实都是C\C++代码。OC代码的转化过程OC的对象结构都是通过基础C\C++的结构体实现的。我们通过创建OC文件及对象,并将OC文件转化为C++文件来探寻OC对象的本质OC如下代码#import <Fo..

2020-10-09 08:32:08 220

原创 Z字形矩阵打印

在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩阵,Z字形扫描的过程如下图所示:  对于下面的4×4的矩阵,  1 5 3 9  3 7 5 6  9 4 6 4  7 3 1 3  对其进行Z字形扫描后得到长度为16的序列:  1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3问题描述:请实现一个Z字形扫描的程...

2020-03-19 14:43:43 1110

转载 IOS开发底层之Weak底层原理实现

一、weak基本用法weak是弱引用,用weak来修饰、描述所引用对象的计数器并不会加1,而且weak会在引用对象被释放的时候自动置为nil,这也就避免了野指针访问坏内存而引起奔溃的情况,另外weak也可以解决循环引用。拓展:为什么修饰代理使用weak而不是用assign?assign可用来修饰基本数据类型,也可修饰OC的对象,但如果用assign修饰对象类型指向的是一个强指针,当指向...

2020-03-02 21:58:40 404

原创 IOS学习基础UI学习效果动画

这里的效果为个人平时学习总结,有需要的同学可以自行下载弹出式按钮效果图github地址:https://github.com/UCliwenbin/BasicDemo-IOS

2020-01-06 15:04:37 129

原创 IOS中如何限制TextField输入的字符个数(含有中文和英文)

在IOS开发中,TextField可以说是我们最熟悉,也是平时用的最多的控件,其本身的用法比较简单,但是在限制输入上,就会出现一些奇奇怪怪的需求,比如说:不能输入表情,不能输入中文,输入的字符个数不能超过20个…等等,可谓是各种花式需求让我们提到这个控件的时候还是有一丝的心虚。今天正好有空,就来谈谈最近一个比较有趣的需求,需求如下:要求:限制TextField中输入的字符不超过40个,如果是中文...

2019-12-16 23:04:53 1469

原创 IOS开发中使用单元测试(OCUnit)测试集成pod库工程中的一些问题以及解决方案

在写unit test的过程中遇到一些问题,在编译的时候,如果我们代码中引入了pod库头文件或者@import xxx,会提示xx.h file not found方法1:在网上找了半天,说是当测试单元在编译的时候没有包含pod库导致的解决方案:Project=>Info=>Configurations将对应的None改一下;注意:是project...

2019-08-09 15:05:41 1181

原创 微信小程序开发之环境搭建

1、申请网站:https://mp.weixin.qq.com/cgi-bin/wx拖到最后,点击立即前往注册,按照流程进行填写,其中需要注意的地方为红框中标出的邮箱这里如果只有一个邮箱的朋友,我介意你重新申请一个,可以申请163的邮箱,传送门申请成功以后,我们进入邮箱,激活微信小程序的链接。然后通过实名登记,我们就完成了第一步微信开发者账号的注册。2、获取AppID...

2019-05-14 17:52:48 406

原创 IOS开发判断网络连接状态

IOS开发中判断网络连接状态以及网络类型我们主要是借助SystemConfiguration、AFNetworking、Reachability来进行判断,底层用的都是SystemConfiguration框架#import &lt;SystemConfiguration/SCNetworkReachability.h&gt;,第一种,使用原生的SystemConfiguration框架来判断网络...

2018-05-29 09:49:05 5505

转载 __bridge,__bridge_transfer和__bridge_retained详解

Core Foundation 框架Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:群体数据类型 (数组、集合等)程序包字符串管理日期和时间管理原始数据块管理偏好管理URL及数据流操作线程和RunLoop端口和soket通讯Core Foun...

2018-05-29 08:14:37 642

原创 IOS用代码绘制一张图片

/ 绘制一张图片UIImage *randomBlockImage(CGFloat sideLength, CGFloat inset){ UIGraphicsBeginImageContext(CGSizeMake(sideLength, sideLength)); CGContextRef context = UIGraphicsGetCurrentContext(); ...

2018-04-25 20:12:53 3597

转载 CGAffineTransform矩阵变换详解

CGAffineTransform定义UIView的transform属性是一个CGAffineTransform类型,用于在二维空间做旋转,缩放和平移。CGAffineTransform是一个可以和二维空间向量(例如CGPoint)做乘法的3X2的矩阵。称为仿射变换,“仿射”的意思是无论变换矩阵用什么值,图层中平行的两条线在变换之后任然保持平行”。官方定义:struct CGAffineTran...

2018-04-24 09:21:39 1330

原创 UITextView去掉单行的边距以及各种坑

self.textView.textContainer.lineFragmentPadding = 0; self.textView.textContainerInset = UIEdgeInsetsZero; 只需要以上两行代码即可。这样我们在UITextView中设置的文字就可以左右两边对齐显示。lineFragmentPading:官方描述:The amount by

2017-12-08 09:36:10 2437

转载 IOS开发之NSDateFormatter处理日期格式详解

在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理。例如://实例化一个NSDateFormatter对象NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//设定时间格式,这里可以设置成自己需要的格式[dateFormatter setD

2017-11-08 23:26:10 689

转载 iOS的UILabel设置居上对齐,居中对齐,居下对齐

通过重写UILable的方法来实现居上对齐,直接上代码// // myUILabel.h // // // Created by yexiaozi_007 on 3/4/13. // Copyright (c) 2013 yexiaozi_007. All rights reserved. // #import typedef enum {

2017-10-25 14:05:00 1744

转载 sizeThatFits 和 sizeToFit的区别

一 sizeThatFits 和 sizeToFit的区别UIView 有个 sizeToFit 方法来计算 UIView 合适的 bounds.size, 注意 autolayout 约束过的 view 该方法失效.- (void)sizeToFit; // calls sizeThatFits: with current view bounds and change

2017-10-24 15:27:37 1157

原创 IOS开发中利用AudioToolbox播放系统声音

1.AudioToolbox概述通过AudioToolbox框架,可以将短声音注册到system sound服务上,被注册到system sound服务上的声音称之为 system sounds。它必须满足下面几个条件。(1).播放的时间不能超过30秒(2).数据必须是 PCM或者IMA4流格式(3).必须被打包成下面三个格式之一:Core Audio Format (.caf),

2017-10-16 10:15:16 854

原创 IOS获取图片中某个像素点的像素值,包括ARGB的各个值

- (UIColor *) getPixelColorAtLocation:(CGPoint)point { UIColor* color = nil; CGImageRef inImage = self.image.CGImage; // Create off screen bitmap context to draw the image into

2017-10-15 16:05:18 3465

StarUML3.1.0破解版.zip

著名的UML工具,目前最新版本是3.1.0,这里提供官方下载包以及相对应的破解方法

2019-07-16

数据挖掘在监狱管理系统中的应用

本章主要探索数据挖掘分类技术在监狱罪犯信息库中的应用,提出了数 据挖掘技术在监狱罪犯信息库中的实施方案,并以监狱罪犯信息库中有期徒刑 (罪犯改造效果)的情况为例介绍了方案的实施过程。

2018-11-13

分苹果问题详解

在赛马网中有一道分苹果的问题,此文档详细的解释了怎么去推公式,怎么去理解最优的解法

2016-10-08

基于蚁群算法的NS2路由算法实现

本代码实现在NS2-allinone-2.3.6中实现了基于蚁群的VAENTs路由算法。

2016-09-24

VMware下三种上网方式配置

对VMware的三种上网方式给给出详细的图文描述,并且对每一种方式在网络中所处的位置给出详细的解答。对安装VMware后出现的网卡给出说明

2016-09-23

NS无线trace分析模板

关于NS2下的无线trace的分析模板,延时抖动,传输率带宽计算模板

2016-03-02

置信度详解

关于置信度、置信区间的详细描述以及如何计算给出一个明确的说明和指导

2016-01-26

正态分布详解

正态分布,数学,想写解释正态分布原理以及应用

2016-01-23

空空如也

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

TA关注的人

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