- 博客(28)
- 资源 (17)
- 收藏
- 关注
原创 iOSRuntime(二)可复用而且高度解耦的用户统计埋点实现方案(method_exchangeImplementations)
用户统计知识:用户行为统计(User Behavior Statistics, UBS)一直是移动互联网产品中必不可少的环节,也俗称埋点。在保证移动端流量不会受较大影响的前提下,PM们总是希望埋点覆盖面越广越好。目前常规的做法是将埋点代码封装成工具类,但凡工程中需要埋点(如点击事件、页面跳转)的地方都插入埋点代码。一旦项目越来越复杂,你会发现埋点的代码散落在程序的各个角落,不利于维护以及复用...
2019-03-28 10:25:59 1637
原创 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 拦截 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
Base64Convert.app.zip
2020-01-07
Runtime(统计埋点)
2019-03-28
静态库打包shellcmd 文件
2019-03-22
swift_新手引导页
2018-10-19
OC-添加新手引导页
2018-10-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人