自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Z1591090的博客

iOS swift

  • 博客(28)
  • 资源 (17)
  • 收藏
  • 关注

原创 iOSRuntime(二)可复用而且高度解耦的用户统计埋点实现方案(method_exchangeImplementations)

用户统计知识:用户行为统计(User Behavior Statistics, UBS)一直是移动互联网产品中必不可少的环节,也俗称埋点。在保证移动端流量不会受较大影响的前提下,PM们总是希望埋点覆盖面越广越好。目前常规的做法是将埋点代码封装成工具类,但凡工程中需要埋点(如点击事件、页面跳转)的地方都插入埋点代码。一旦项目越来越复杂,你会发现埋点的代码散落在程序的各个角落,不利于维护以及复用...

2019-03-28 10:25:59 1637

原创 架构模式:为什么要选择MVVM模式?

1.映射关系

2019-03-19 18:48:13 3267

原创 iOS数据库之一: 沙盒的详细讲解

在iOS平台上,每个app都有一个存储空间,用以存储照片、声音文件、文本、属性列表等,我们称之为沙盒。在沙盒里,app可以自己读写文件,但仅限于自己的沙盒,不可访问其他app沙盒,不可进行相互间通信,除非通过URL Scheme...

2019-03-09 15:44:04 1899

原创 ios 本地数据库存储的方式和几种方案的比较

常见的储存方式 - plist 格式文件存储 - NSUserDefaults 沙盒存储(个人偏好设置) - 文件读写存储 - 解归档存储 - 数据库存储了解缓存,先要了解iOS中沙盒机制这个概念沙盒其实质就是在iOS系统下,每个应用在内存中对应的存储空间。每个iOS应用都有自己的应用沙盒(文件系统目录),与其他文件系统隔离,各个沙盒之间相互独立,而且不能相互访问(手机没有...

2019-03-09 15:37:09 4432

原创 ios 图片资源管理的四种方式(Assets,bundle文件,Resource,沙盒文件目录下)

Assets.xcassets一般是以蓝色的Assets.xcassets的文件夹形式在工程中,以Image Set的形式管理。当一组图片放入的时候同时会生成描述文件Contents.json。且在打包后以Assets.car的形式存在,不能打开(网上有工具ThemeEngine可以打开,感兴趣的可以测试)。以此方式放入的图片并不在mainBundle中iOS 开发中一般在工程内导入两...

2019-03-08 17:54:03 25775 1

原创 ios 三种系统弹框的封装(UIAlertController,UIActionSheet,输入框)

一句代码搞定三种弹框(面向协议的编程)第一步:代码的架构看图(定义一个OutgoingServer,)我们只需要调用这个,第二步: 从OutgoingServer获得弹框+ (id<ActionSheetAlertInterfaces>)actionSheetWithTitle:(NSString *)title ...

2019-03-08 11:30:37 5353

原创 iOS开发之静态库—— 图片、界面xib等资源文件封装到.a静态库

公司的一个项目,需要做成一个.a静态库供别人调用,但是静态库中引用到了图片和xib1.打开Xcode,点击File\New\Project,选择iOS\Framework and Library\Cocoa Touch Static Library新建一个静态库工程.2.导入你的项目(包括项目里面所有的功能类和资源文件)1》对于图片,建议不要把存放图片的Assets.xcassets文件直...

2019-03-07 17:12:26 2418

原创 iOS 引用外部静态库(.a文件)时或打包.a时,Category方法无法调用。崩溃,静态库所用到的第三方不打到静态库,防止导入工程文件冲突

我的这个是MJRefresh,学习打.a包Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘-[UITableView setMj_footer:]: unrecognized selector sent to instance 0x7fa37a871000’结果这个问题如下设置:...

2019-03-05 16:26:56 2184

原创 iOS闪退的原因和方案总结

1.字典1.通过key值得到安全的value值,字符串(NSString)或数组(NSArray)数据为NUll 崩溃以下收集的崩溃原因,大家会觉得怎么也不会犯这错误,举个例子,我下面所写的 NSDictionary *dic = @{@“key”: nil}; 大部分可能认为他会崩溃,非常小心, 如果是NSDictionary *dic = @{@“key”: str} 这种写法,大家有可能...

2019-03-05 14:40:12 10404 1

原创 ios Runtime(一) 详解

简介Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的。Runtime的特性主要是消息(方法)传递,如果消息(方法)在对象中找不到,就进行转发Runtime 的作用Objc 在三种层面上与 Runtime 系统进行交互:1.通过 Objective-C 源代码2.通过 Foundation 框架的...

2019-03-27 19:33:48 1108

原创 iOS 蓝牙技术CoreBluetooth

IOS蓝牙技术—CoreBluetooth一、iOS蓝牙简述二、CoreBluetooth简介1、基本概念2、CoreBluetooth 框架介绍三、开发模式1、中心模式2、外设模式一、iOS蓝牙简述​ iOS开发中关于蓝牙技术的框架有四种:GameKit.framework 多用于游戏开发,iOS设备之间的连接。MultipeerConnectivity.framework...

2019-03-27 19:02:44 1561

原创 【解决方法】ld: warning: directory not found for option

问题及解决方法简单来说,这个问题分两个方面。错误如下,这表示是查询 Library 的时候出现的异常。“directory not found for option '-L/…”解决方法:依次 Project -> targets -> Build Setting -> Library Search Paths删除里面的路径错误如下, 这表示是查询 F...

2019-03-26 14:23:24 4536

原创 iOS 报错 Undefined symbols for architecture x86_64:解决方法

一,报错详情Undefined symbols for architecture x86_64:“OBJC_CLASS$_Person”, referenced from:OBJC_CLASS$_Dog in Dog.oobjc-class-ref in ViewController.o“OBJC_METACLASS$_Person”, referenced from:OBJC_MET...

2019-03-26 14:09:42 4969

原创 ios[问题]The file “XXX.app” couldn’t be opened because you don’t have permission to view it.

当引入第三方的框架的时候 容易产生以下问题:The file “XXX.app” couldn’t be opened because you don’t have permission to view it.如图:造成的原因:info文件中的字段Executable file 与 build settings栏中的Packaging中的Product Name 不一致就会导致上述截图的...

2019-03-26 14:03:34 1979

原创 ios用 shell 自动打包静态库(里面包含真机和模拟器)

强烈建议用脚本打包,这样支持模拟器和真机第一步:.创建一个shell文件 如图:(下载链接)第二步:在sdk 相同的文件夹下创建一个新的shellcmd文件如图:第三步:找到 shellcmd 文件的路径如图第三步执行:./build_framework.sh 命令如图第四步:看是否执行成功如图:第五步:终端查看静态库所支持的架构执行 lipo -info如图注意:...

2019-03-22 17:46:13 1596

原创 IOS 用组件化映射的关系表维护列表(后台下发不同的字段,创建不同的类的优化)

问题:根据后台下发不同的字段,来创建和跳转不同的类(比如支付宝动态菜单的跳转)**方案:**这里考虑register的形式,维护一份列表

2019-03-19 18:55:59 965

原创 iOS 报错 Build input file cannot be found:

如图错误信息:2036487.png)Build input file cannot be found: 文件没有被发现但是Build Pases 里面copy 却有。解决:如图第一步找到:第二步:把它删除重新编译...

2019-03-19 10:25:39 10725

原创 iOS使用Charles(青花瓷)抓包并篡改请求头的数据

第一步:编辑要修改的头部信息如图所示第二步:修改完重新执行接口如图所示

2019-03-18 18:04:48 2823

原创 iOS 利用 charles 拦截 app 的 接口请求让接口不请求或者请求

第一步:在需要请求的接口打一个断点如下图第二步:重新启动?APP如果:点击单步执行,这个接口就不请求了,点击About这个接口会请求第三步:接口拦截成功如果所示...

2019-03-18 17:50:18 3816

原创 iOS UITableViewHeaderFooterView的背景色怎么设置?

如上图把UITableViewHeaderFooterView 设置成白色给cell设置背景色我们可以设置contentView的背景色就行了,但是给组头组尾UITableViewHeaderFooterView设置背景色,试过的应该知道设置contentView的或直接设置背景色都没用。这时候可以用到tableview的一个代理搞定。- (void)tableView:(UITableVi...

2019-03-18 16:18:01 1755

原创 CUICatalog: Invalid asset name supplied: '

今天看到了一个Xcode log出了一个错误CUICatalog:Invalid asset name supplied: ,原因:[UIImage imageNamed:]调用的时候, name为nil.解决的方法:就是查找所有+[UIImage imageNamed:]调用的时候, 找到name是nil的地方,...

2019-03-18 11:02:40 1463

原创 ios block的全方位解刨(block用什么修饰,block的循环引用,weakSelf 需要配合 strongSelf 使用,操作Block外部的变量)

第一部分:Block本质block 是Cocoa/Cocoa Touch Framework 中的匿名函式(Anonymous Functions)的实作。所谓的匿名函式,就是一段 具有物件性质的程式码,这一段程式码可以当做函式执行,另一方面,又可以当做物件传递;因为可以当做物件传递,所以可以让某段程式码变成是某个物件的某个 property,或是当做 method 或是 function 的...

2019-03-14 15:46:27 2695

原创 ios 数据存储之四:解归档存储

一、什么是归档:归档: 对象归档是将对象以文件的形式保存到磁盘中(也称为序列化,持久化) ;使用的时候读取该文件的保存路径读取文件的内容(也称为解档,反序列化)。二、归档 与 plist存储的区别:对象归档的文件是保密的,在磁盘上无法查看文件中的内容,而plist属性列表是明文的可以查看。而plist只能保存这几种类型:NSString NSNumber NSDate NSDat...

2019-03-13 09:52:39 997

原创 ios 数据库之三:NSUserDefaults 沙盒存储(个人偏好设置)

要 NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的是一些信息,这时候就不能直接存储到NSUserDefaults了一、了解NSUserDefaults以及它可以直接存储的类型NSUserDefaults是一个单例,在整个程序中只有一个实例对象,他...

2019-03-12 19:50:10 905

原创 iOS数据存储之二:Plist 格式文件存储

属性列表是一种XML格式的文件,拓展名为plist可以存储的数据类型有: Array Dictionary String Boolean Date Data Number。常用于储存用户的设置 或 存储项目中经常用到又不经常修改的数据。常用于储存用户的设置 或 存储项目中经常用到又不经常修改的数据。创建 .plist 文件可以使用可视化工具即Xcode ,也可以使用代码。不适合存储大...

2019-03-12 19:37:55 1162

原创 iOS-UIImage imageWithContentsOfFile 和 imageName 对照(图片加载的内存及优化)

1.官方文档的解释imageNamed: 把image缓存到内存里面,此方法在系统缓存中查找具有指定名称的图像对象,并返回最适合主屏幕的图像变体。如果匹配的图像对象尚未在缓存中,此方法将定位并从磁盘或可用资产目录加载图像数据,然后返回结果对象。系统可以在任何时候清除缓存的图像数据以释放内存。仅对缓存中但当前未使用的图像进行清除。imageWithContentsOfFile:或i...

2019-03-11 17:20:53 2992

原创 iOS 如何把图片资源或者xib文本文件,打包成bundle文件及遇到的坑(详解)

1、Bundle 文件Bundle 文件,简单理解,就是资源文件包。我们将许多图片、XIB、文本文件组织在一起,打包成一个 Bundle 文件。方便在其他项目中引用包内的资源。2.Bundle 文件是静态的,也就是说,我们包含到包中的资源文件作为一个资源包是不参加项目编译的。也就意味着,bundle 包中不能包含可执行的文件。它仅仅是作为资源,被解析成为特定的 2 进制数据。2、制作 Bun...

2019-03-08 18:41:18 2712

原创 ios This application's application-identifier entitlement does not match that of the installe

Xcode编译报错:This application’s application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed.原因:两次编译的用的证书不一致。解决:把之前装的app卸载...

2019-03-07 17:10:45 3779 1

LessonRuntime-main.zip

可以运行起来的源代码

2021-08-25

自定义优化KVO.zip

自己尝试实现KVO,更加理解KVO

2021-08-02

libclosure-38.tar

查看block源码有助于我们对block更加的理解

2021-07-22

Base64Convert.app.zip

base64编解码工具 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='。

2020-01-07

TreeNode.zip

本代码涉及到的有二叉树的遍历以及反转二叉树,希望能够对大家有用,今天也后陆续的上传一些跟算法相关的,希望大家能够多多支持

2019-12-25

WKWebViewAndJS(iOS客户端与前端交互)

iOS与前端交互采用了WKWebView .demo 如何做到耦合性 增加代码的复用率 减少重复代码 易维护 可扩展性强

2019-04-28

Runtime(统计埋点)

埋点统计的方案 第一步:创建一个Manager来管理埋点 1)里面实现UMSAgent的注册(startWithAppKey:) 2)实现一些业务逻辑的方法(比如,发送事件,页面的统计,h5的统计,等等) 第二步:把eventId用 Config 来进行管理 第三步:Runtime 写一个工具类(区分类方法,和实例方法 例如RunTimeUtil) 第四步:Runtime的method_exchangeImplementations等接口将方法(设为M)的实现互相交换 优点:1.与工程基本解耦,避免引入了“脏代码” 2.维护配置表比维护散落在工程各个角落的代码简单

2019-03-28

静态库打包shellcmd 文件

iOS 静态库自动打包,使用 shellcmd 脚本如何写 # 获取脚本所在目录 filepath=$(cd "$(dirname "$0")"; pwd)"/" cd $filepath cd .. # 工程target,主要配置这个target即可 targetname="SafeToolSDK" # 工程目录(默认工程目录在脚本目录的上一级目录) projectdir=$(pwd)"/" echo $projectdir # 工程名 projectname="SafeToolSDK.xcodeproj" # lib输出目录 buildDir=$filepath echo $buildDir #lib输出名 libname=$targetname iossdknum=$(xcodebuild -showsdks | grep iphoneos | grep -Eo '[0-9.]+' | sed -n '1p') configurationname="Release" mydir=$filepath$libname"/" rm -rf $mydir mkdir $mydir # arm64 archname="arm64" lib64=$libname"64" echo "archname:$archname" xcodebuild -project $projectdir$projectname -configuration $configurationname -target $targetname -sdk "iphoneos$iossdknum" -arch $archname BUILD_DIR=$buildDir clean xcodebuild -project $projectdir$projectname -configuration $configurationname -target $targetname -sdk "iphoneos$iossdknum" -arch $archname BUILD_DIR=$buildDir libpath=$buildDir"/Release-iphoneos/"$libname".framework" lib64path=$mydir$lib64 mv -f $libpath"/"$libname $lib64path # armv7 archname="armv7" libv7=$libname"v7" echo "archname:$archname" xcodebuild -project $projectdir$projectname -configuration $configurationname -target $targetname -sdk "iphoneos$iossdknum" -arch $archname BUILD_DIR=$buildDir clean xcodebuild -project $projectdir$projectname -configuration $configurationname -target $targetname -sdk "iphoneos$iossdknum" -arch $archname BUILD_DIR=$buildDir libpath=$buildDir"/Release-iphoneos/"$libname".framework" libv7path=$mydir$libv7 mv -f $libpath"/"$libname $libv7path # armv7s archname="armv7s" libv7s=$libname"v7s" echo "archname:$archname" xcodebuild -project $projectdir$projectname -configuration $configurationname -target $targetname -sdk "iphoneos$iossdknum" -arch $archname BUILD_DIR=$buildDir clean xcodebuild -project $projectdir$projectname -configuration $configurationname -target $targetname -sdk "iphoneos$iossdknum" -arch $archname BUILD_DIR=$buildDir libpath=$buildDir"/Release-iphoneos/"$libname".framework" lib

2019-03-22

iOS 系统三种弹框的封装

三种弹框的封装,一个方法调用三种弹框,分别调用(UIActionSheet,UIAlertController,添加输入框)

2019-03-08

防止崩溃的措施

一款提高iOS稳定性,有效防止闪退的框架,那么iOS中会有很多引起crash,比如最常见的数组越界,添加空值。

2019-03-05

iOS 安全接口字符串的判断

字符串的一些安全判断,比如,字符串是否为空,长度是否为0,,字符串是否有空格

2018-12-30

swift_新手引导页

swift 语言实现通用App安装引导页的实现,其实这个功能和引导页差不多用UIScrollView的contentSize和contentOffset(偏移量)这两个属性

2018-10-19

OC-添加新手引导页

iOS OC 语言实现通用App安装引导页的实现,其实这个功能和引导页差不多用UIScrollView的contentSize和contentOffset(偏移量)这两个属性

2018-10-19

iOS 滤镜属性

iOS 滤镜属性的小demo做美颜相机需要的小朋友自由下载。

2018-07-27

swift写的小项目

使用swift 写的小项目里面有第三方,还有swift许多的语法等等

2018-07-27

iOS 真机包11.3

最新12.0系统的xcode资源包,不用升级xcode即可让模拟器运行12.0的系统

2018-07-20

地址选择器

ISO 模仿京东地址选择四个的地址选择希望大家都去下载

2017-12-05

空空如也

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

TA关注的人

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