自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

转载 JSBridge的原理及使用

JSBridge的原理及使用

2023-08-17 14:14:52 3439

原创 mac m2芯片 安装 brew 和cocoapods

安装成功 但还需要重启终端 或者 运行 下面命令, 否则可能无法使用。安装成功后,关闭终端,然后重新打开终端,查看Homebrew版本。也可能是因为网络原因网络中断,可以尝试多试几次。中途可能需要输入几次密码。安装cocoapods。

2023-05-09 15:57:24 2470

原创 组件化工具BeeHive

之前在做项目组件化是为解决组间通信,参考了BeeHive 但是只用用了他的组件通信,对BeeHive进行详细的阅读。今天再读BeeHive 并借鉴了网上的相关解释,发现BeeHive 内部使用了很多相关的底层技术。

2023-04-26 16:56:30 112

转载 HTTPS-加密过程

https的加密过程详解

2023-03-16 11:52:52 111

原创 iOS main函数为什么要包着@autoreleasepool?

最近面试总会被问到自动释放池相关的问题,在回答完自动释放池的原理和内部的结构AutoreleasePoolPage后,面试官大多习惯性的会问一句。main函数中为什么用@autoreleasepool{}包着。查阅网络上的相关资料,对这一块的解释也是十分有限。经过对AutoreleasePoolPage的深入了解以及自动释放池和线程/RunLoop的相关了解。大致原因总结如下:main函数中写的代码中可能产生 autorelease 对象,用 @autoreleasePool 包...

2021-11-12 16:54:34 2390

原创 iOS神技之动态更换APP的Icon图

iOS神技之动态更换APP的Icon图 动态修改app的图标,就是在不重新安装app的情况下,可以修改当前的icon图标;在某些情况下,是有这个需求的;例如,可以更换主题的app中,一般都会有一套完整的主题包含相应的icon;还有就是一些节日主题的icon或者促销的icon,例如淘宝、京东等的节日icon。在iOS 10.3之后,苹果官方提供了相关的API来实现这个功能,主要是下面这几...

2019-12-29 17:11:15 925

转载 iOS响应者链彻底掌握

点我跳转原文地址概述iOS响应者链(Responder Chain)是支撑App界面交互的重要基础,点击、滑动、旋转、摇晃等都离不开其背后的响应者链,所以每个iOS开发人员都应该彻底掌握响应者链的响应逻辑,本文旨在通过demo测试的方式展现响应者链的具体响应过程,帮助读者彻底掌握响应者链。Demo你可以在这里(GitHub地址)下载本文测试的Demo源码,阅读本文的同时结合Demo...

2019-06-19 11:51:02 150

转载 NSCache的详解,以及SDWebImage的缓存策略源码分析

NSCache讲解NSCache的基本使用,NSCache是Foundation框架提供的缓存类的实现,使用方式类似于可变字典,由于NSMutableDictionary的存在,很多人在实现缓存时都会使用可变字典,但NSCache在实现缓存功能时比可变字典更方便,最重要的是它是线程安全的,而NSMutableDictionary不是线程安全的,在多线程环境下使用NSCache是更好的选择。...

2019-05-17 16:01:42 251

转载 iOS图层配合核心动画详解

Core AnimationCore Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍。也就是说,使用少量的代码就可以实现非常强大的功能。 Core Animation可以用在Mac OS X和iOS平台。 Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程。 要注意的是,Core Ani...

2019-04-18 19:21:24 128

原创 iOS经典讲解之Xcode10打开旧项目报错解决方案

近期升级Xcode10后,运行原来的项目会出现各种报错,大致分为下面两种,附带解决方案。一、Multiple commands produce 错误这是因为编译方式和之前的不一样。解决方式为二、libstdc++ 库报错(Xcode 10 取消了内置支持的 libstdc++ 库)方案:可以直接使用libc++ 这个库来替换,或者麻烦一点从Xcode 9 那边拷贝一...

2018-12-18 13:45:40 512 1

原创 iOS 组件化开发

1、创建模板文件 pod lib create flieNamepod spec create flieName方法⼀会帮助你创建一⼤大堆的⽂文件,包括演示demo创建;方法⼆方便你在现有的项目中提取你需要制作pod的代码。这里使用的是方式一选择平台、语言、模板、类前缀等2、在模板的Classes文件中不安置自己编写的组件/框架。3、模板本地安装组件测试同时把相应的文件拖动如下的模板工程文件中 c...

2018-05-30 13:58:49 3339

原创 iOS 代码混淆

一、代码易读字符串混淆混淆分许多思路,比如:1)花代码花指令,即随意往程序中加入迷惑人的代码指令2)易读字符替换1.1 防止class-dump出可读信息的有效办法是易读字符替换首先切换到我们的项目目录下,创建两个文件:confuse.sh: 存放混淆的脚本func.list: 需要混淆的方法、变量名创建文件右键项目名称,把这两个文件导进来项目中来添加新建文件到项目中然后打开 confuse.sh...

2018-04-20 15:35:10 1338 2

原创 从零开始学React Native之数据持久化存储

数据持久化就是指应用程序将某些数据存储在手机存储空间中。AsyncStorage APIRN框架为开发者提供了 AsyncStorage API,开发者可以利用它将任意“字符串键值对”保存到存储空间中。它是简单的,异步的。用它可以取代Android的sharedperference和ios的NSUserDefault。AsyncStorage存储的数据对该RN应用全局都是可

2018-01-30 11:08:52 1664

原创 iOS11 设置导航栏的返回按钮只保留箭头,去掉后边的文字

在 iOS 11 ,之前,为了只显示 返回 图片,而不显示上级界面的标题,可以通过设置导航栏的的属性 [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)forBarMetrics:UIBarMetricsDefault];在iOS11上,出现了图片显示异常的现象(

2018-01-04 21:06:23 5641

原创 React Native 中的 ScrollView 基本使用

最近老大想接了个项目 想让我们 通过React Native 来实现 等技术成熟后 把我们自己的APP 也通过React Native 来实现 这样既可以实现跨平台 又可以 实现热更新。所以,近期看了React Native 中文网 开始尝试着写一点小功能的东西试试闲话少叙 今天先从 ScrollView 开始:        1、ScrollView介绍:ScrollVi

2017-12-29 13:32:55 9351

原创 UIPageViewController的简单使用

今天再看一个旧项目时,发现这里面用的了UIPageViewController这个控件(可以理解为书籍控件)。之前只是听说过,从来没有去实际运用过。所以就来看看UIPageViewController的基本使用。本文只是对UIPageViewController它的基本介绍,对于大牛级别的可以绕行。      UIPageViewController也有自己的delegate和dataSour

2017-11-08 11:36:27 743

转载 iOS UIWebView 通过 cookie 完成自动登录验证

一些说明:通过UIWebView登录后,会自动得到web服务器设置的cookie包括服务器中的seesionid。cookie不会自动保存在app里面,需要通过设置才能在下次启动app时获取。自动登录,需要设置header,才能将cookie带给web服务器。自动登录,需要web服务器端进行cookie验证方可登录。实现流程:1. 做好Sign in页面后,通过get或post递交

2017-09-12 11:24:26 239

转载 AES加密 - iOS与Java的同步实现

AES是开发中常用的加密算法之一。然而由于前后端开发使用的语言不统一,导致经常出现前端加密而后端不能解密的情况出现。然而无论什么语言系统,AES的算法总是相同的, 因此导致结果不一致的原因在于 加密设置的参数不一致 。于是先来看看在两个平台使用AES加密时需要统一的几个参数。密钥长度(Key Size)加密模式(Cipher Mode)填充方式(Padding)初始向量(I

2017-09-01 11:47:25 2814

原创 ios 切换多任务后台界面应用闪屏

在作iOS应用时 应用在做多任务切换时 会出现闪屏或者在滑动屏幕时自己写的应用会时而显示应用的界面时而不显示.定位发现原因是自己设置UIBarButtonItem的显示模式使标题向左移动[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(NSIntegerMin, NSInteg

2017-06-07 16:06:38 3080

原创 ios-AutoLayout(自动布局代码控制)简单总结

每次写布局的代码总是要翻看一下之前的的代码:今天就好好的整理下笔记:原理:IOS6.0之后,苹果优化了UI界面的布局方式,提出了自动布局的概念,和之前的autoresizing相比功能更强大。子视图基于父视图的自动布局显示。都是父视图去添加对子视图的约束。在这里主要说的是通过代码对自动布局视图的实现。代码中一般用到的有两个添加约束的方式:1.-(void)addConstr

2017-04-21 22:09:27 231

原创 Swift 中计算型属性 和 懒加载 的区别

import UIKitclass Person: NSObject { private var name: String?; /// 计算型属性 // 不会开辟`空间` 每次调用都会重新调用并`计算` // 类似一个特殊的函数(没有参数) var title1: String { return "

2017-03-27 14:47:08 346

原创 蓝牙 BlueTooth Low Energy (BLE)

BLE:(Bluetooth low energy)蓝牙4.0设备因为低耗电,也叫BLEperipheral,central:外设和中心设备,发起链接的是central(一般是指手机),被链接的设备是peripheral(运动手环)service and characteristic:(服务和特征)每个设备会提供服务和特征,类似于服务端的API,但是结构不同.每个设备会有很多服务,

2017-03-17 17:09:26 1498

原创 GameKit 蓝牙

gameKit 只用于iOS设备间的同个应用连接, 多由于游戏 在iOS7之后过期gameKit 的使用过程主要可以分为四步: 1.创建一个GKPeerPickerController 对象 这个对象用来搜索附近的设备(类似alertView). 2.设置GKPeerPickerController 的代理 用于连接的回调 3.在 (void)peerPickerContr

2017-03-17 15:49:26 361

原创 Swift 修改约束 添加UIView动画

最近在使用Swift编写程序时 使用UIView动画 对约束执行动画遇到了一个小坑1.在控制器中添加一个 容器view, 容器view的约束是宽高都是300/ 水平居中/ 竖直居中2. 在容器view中添加一个imageView, imageView的约束是:和容器view等宽等高 / 水平居中 /顶部对齐着这里希望通过修改imageView的顶部约束来执行动画pri...

2017-03-02 17:26:09 2292

转载 <iOS> 谈谈iOS Animation

零.前言这里没有太多的代码细节,只是探索iOS动画的基本概念,以及其抽象模型,数学基础等.我们学习一个知识的时候一般有两个部分,抽象部分和形象部分,抽象好比语言的语法,是规则,形象好比具体的句子,可以用来和别人交流的.抽象比形象难于理解,但比形象通用.其实数学中经常碰到抽象和形象的概念,比如有一系列离散的点,这是形象;通过这些点我们拟合出一条曲线,得到其函数,函数是抽象的;然后通过这个函数

2016-11-29 15:59:24 348

原创 UIDynamic 动画

UIDynamic是从iOS7开始引入的一种新技术,隶属于UIKit框架,可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象。要想使用UIDynamic来实现物理仿真效果,大致的步骤如下:1、创建一个物理仿真器(顺便设置仿真范围);2、创建相应的物理仿真行为(顺便添加物理仿真元素)3、将物理仿真行为添加到物理仿真器中---->开始仿真。三大概念:

2016-10-11 15:12:34 315

原创 iOS开发 适配iOS10以及Xcode8

一、证书管理用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书。建议大家勾选这个Automatically manage signing(Ps.但是在beat2版本我用的时候,完全不可以,GM版本竟然神奇的又好了。)下面我来说说可能会出现的问题:1.Xcode未设置开发者账号情况下的截图解决办法是:大家在Xcode的偏好设置

2016-09-23 17:06:00 865

原创 setValue: forKeyPath: 与 setValue: forKey: 区别

KVC是Key Value Coding的缩写,意思是键值编码。在iOS中,提供了一种方法通过使用属性的名称(也就是Key)来间接访问对象的属性方法。相信有人肯定对 setValue: forKeyPath: 与 setValue: forKey: 这两个方法有所不解,这两个方法同属于nsobject(Key Value Coding) 的类扩展方法 根据苹果官网的说的是:...

2016-09-06 14:59:17 1114

原创 利用Multipeer Connectivity框架进行WiFi传输

利用Multipeer Connectivity框架,即使在没有连接到WiFi(WLAN)或移动网络(xG)的情况下,距离较近的Apple设备(iMac/iPad/iPhone)之间可基于蓝牙和WiFi(P2P WiFi)技术进行发现和连接实现近场通信。

2016-08-10 14:59:11 463

转载 Xcode7 iOS9网络请求适配 网络白名单

一、网络适配由http改成https    苹果官方对App Transport Security Technote的解释如下:    翻译成中文的意思就是说:iOS9.0SDK在编译的时候,默认所有从NSURLConnection、CFURL和NSURLSession发出的http请求,都改为https请求。由于AFNetworking版本底层是用了NSURLConnection

2016-08-03 15:58:14 4883

原创 iOS摄像头和相册-UIImagePickerController-浅析

在一些应用中,我们需要用到iOS设备的摄像头进行拍照,视频。并且从相册中选取我们需要的图片或者视频。关于iOS摄像头和相册的应用,可以使用UIImagePickerController类来完成控制。关于UIImagePickerController的相关知识,UIImagePickerController继承自UINavigationController 并且遵守UINavigationC

2016-07-11 17:42:52 1587

原创 NSRuntime

一、runtime简介RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数。对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。事实证明:在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过

2016-06-06 18:08:36 424

原创 NSInvocation 注意事项

在利用NSInvocation对方法进行包装时遇到了一点小坑。我们平时再做开发时可以利用NSInvocation对象对我们的方法进行一次包装回调。//方法签名(方法的描述) NSMethodSignature *signature = [[self class] instanceMethodSignatureForSelector:selector];//利用一个NSInvoc

2016-06-02 12:29:13 596

原创 NSRooLoop 浅析

iPhone手机开发NSRunLoop 的简单介绍

2016-06-02 12:03:50 386

原创 Xcode7无证书真机测试问题

在使用Xcode7进行真机测试时遇到的坑

2016-05-12 12:11:27 460

原创 iOS基本动画

iOS开发基本动画简述

2016-03-18 21:35:15 323 1

原创 UIView 中position 和anchorPoint 的了解 iOS

iOS开发中 position 和anchorPoint 的彻底了解

2016-03-18 21:22:38 1677

原创 iOS 3D Touch 简述

3D Touch 简单实现 主要是 正对iPhone 手机 iOS9.0 以上手机的应用的需求

2016-03-04 11:21:39 482

原创 Xcode7 真机测试出现 "The account 'Apple ID' has no team with ID 'team ID'的解决方案

The account '' has no team with ID ''

2016-01-30 15:56:34 2578

原创 iOS 中 frame、center 和bounds 的深入了解

iOS 中 frame、center 和bounds 的深入了解

2016-01-23 23:35:53 614

sqlite3下载

轻量级数据库,简单编译就能用,SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

2018-12-18

Xcode10 之前的动态库的替换库

iOS经典讲解之Xcode10打开旧项目报错解决方案,这里主要是应为Xcod10以后的动态库做到了改变

2018-12-18

UIBezierPath

UIBezierPath的简单介绍,希望有助于你的理解与应用

2016-01-14

iOS 多线程 GCD浅析

切换到主线程队列,执行刷新操作 dispatch_async(dispatch_get_main_queue(), ^{ //主线程中执行UI刷新 imageView.image = image; });

2016-01-07

dispatch_source

关于dispatch_source 浅析

2016-01-07

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

TA关注的人

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