OC
文章平均质量分 52
Z苗
这个作者很懒,什么都没留下…
展开
-
iOS 自定义一些安全接口(比如字典取值或者说数组取值)
我们知道有时候后抬给我们的类型,我们iOS语言可能很难识别所以导致崩溃或者说数组越界等等都会导致,我们一般在写项目的时候会自定义一些安全的接口。1.数组取值的安全接口(使用扩展)/** * 在数组中根据索引查找对象 * * @param index 索引 * * @return 查找的数据 */- (id)objectAtIndex_zmm:(NSUInteger)i...原创 2018-07-24 10:50:51 · 3147 阅读 · 0 评论 -
iOS事件的传递和响应机制 - 原理
前言按照时间顺序,事件的生命周期是这样的:事件的产生和传递(事件如何从父控件传递到子控件并寻找到最合适的View,寻找最合适的view底层实现,拦截事件的处理)->找到最合适的view后的事件处理(touches方法的重写,事件的响应)重点难点: (1) 如何找到合适的View ...原创 2019-09-10 17:25:35 · 856 阅读 · 0 评论 -
Swift VS Objective-C
前言:Swift 注重安全性,而Objective-C注重灵活性,Swift有函数式编程,面向对象编程,和面向协议编程,而Objective-C 几乎只有面向对象编程,Swift更注重值类型的数据结构,而Objective-C 遵循c语言的老一套,注重指针和索引,Swift 是静态类型语言,而Objective-C 是动态类型语言数据结构Swift 为什么将String Array 和 Di...原创 2019-09-27 17:04:19 · 1328 阅读 · 0 评论 -
App 启动时间过长,该怎样优化
App 启动时间过长,可能有多个原因造成的,从理论上说App的启动时间是由mian()函数之前的加载时间(t1)和mian函数之后的加载时间(t2)组成的关于t1 需要分析App 启动日志,具体方法是在Xcode 添加 DYLD_PRINT_STATISTICS 打印输出启动时间第一步:第二步:打印的日志 dylib loading time: 403.91 millisecond...原创 2019-09-27 19:06:56 · 2242 阅读 · 0 评论 -
ios 三种系统弹框的封装(UIAlertController,UIActionSheet,输入框)
一句代码搞定三种弹框(面向协议的编程)第一步:代码的架构看图(定义一个OutgoingServer,)我们只需要调用这个,第二步: 从OutgoingServer获得弹框+ (id<ActionSheetAlertInterfaces>)actionSheetWithTitle:(NSString *)title ...原创 2019-03-08 11:30:37 · 5361 阅读 · 0 评论 -
iOS 蓝牙技术CoreBluetooth
IOS蓝牙技术—CoreBluetooth一、iOS蓝牙简述二、CoreBluetooth简介1、基本概念2、CoreBluetooth 框架介绍三、开发模式1、中心模式2、外设模式一、iOS蓝牙简述 iOS开发中关于蓝牙技术的框架有四种:GameKit.framework 多用于游戏开发,iOS设备之间的连接。MultipeerConnectivity.framework...原创 2019-03-27 19:02:44 · 1569 阅读 · 0 评论 -
iOSRuntime(二)可复用而且高度解耦的用户统计埋点实现方案(method_exchangeImplementations)
用户统计知识:用户行为统计(User Behavior Statistics, UBS)一直是移动互联网产品中必不可少的环节,也俗称埋点。在保证移动端流量不会受较大影响的前提下,PM们总是希望埋点覆盖面越广越好。目前常规的做法是将埋点代码封装成工具类,但凡工程中需要埋点(如点击事件、页面跳转)的地方都插入埋点代码。一旦项目越来越复杂,你会发现埋点的代码散落在程序的各个角落,不利于维护以及复用...原创 2019-03-28 10:25:59 · 1643 阅读 · 0 评论 -
iOSRuntime(四)黑科技 class_getInstanceMethod和class_getClassMethod
这两个方法都是可以获取到类里面的方法,不过这两个方法获取的方法类型不同:class_getInstanceMethod 得到类的实例方法class_getClassMethod 得到类的类方法 ps:class_getInstanceMethod只能获取实例方法,如果用它获取类方法的话,获取到的是nil;同理class_getClassMethod只能获取类方法,不能获取实例方法。...原创 2019-04-03 11:00:57 · 3362 阅读 · 0 评论 -
WKWebView 中 alert 不弹框的问题(可能导致app崩溃)
在WKWebView开发中,经常会使用 alert() 函数来调试脚本。但在某种情况下,alert() 函数是无效的,同时导致 App 停止响应。比如你在 WKWebView 中调用 native 方法弹出一个模式窗口(比如展现一个模式菜单),然后再在这个模式窗口中回调 js 函数。在这个 js 函数中,如果你使用 alert() 函数,就会导致前面所说的问题。 function alertA...原创 2019-04-17 10:07:58 · 3942 阅读 · 0 评论 -
iOS AppDelegate轻量化,组件化
为什么AppDelegate轻量化,组件化?Appdelegate功能我们有太多的业务需要监听生命周期,比如第三方初始化SDK,文件的管理,推送消息,前后台切花,定位,等等。如果我们把Appdelegate很多职责能够拆分到各个模块中去这样我们的Appdelegate更加维护和管理。分模块加载AppDelegate方法基于上述考虑,我们可以采用一种分模块加载的方式加载所有AppDelega...原创 2019-05-21 15:52:12 · 1587 阅读 · 0 评论 -
ios - UIViewController 的生命周期
(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];if (self) {}return self;}什么时候调用非...原创 2019-09-10 11:31:39 · 724 阅读 · 0 评论 -
NSString用copy还是strong修饰?
strong修饰要给属性NSString赋一个不可变的值时,用strong缘由:如果使用copy来修饰属性,在进行赋值的时候,会先做一个类型判断,如果赋的值是一个不可变的字符串,则走strong的策略,进行的是浅拷贝;如果是可变的字符串,则进行深拷贝创建一个新的对象。所以如果我们确定是给属性赋值一个不可变的值,就不用copy再多去判断一遍类型,因为如果是很多的NSString属性需要赋...原创 2019-08-30 15:25:51 · 1388 阅读 · 0 评论 -
ios新手引导页(oc 和swift)
在第一次安装App, 或者更新App的时候, 常常会出现一个引导界面, 昨天晚上花了点时间, 写了个引导页,太晚就没发出来, 实现一个引导页其实并不困难. 请看代码点我下载Swift的Demo 点我下载OC的demo我们用NSUserDefaults类来判断程序是不是第一次启动或是否更新,在 //显示新手引导图 if ([GuideOutgoingServer is...原创 2018-10-23 18:18:19 · 2878 阅读 · 1 评论 -
ios 用正则获取需要的内容出现闪退(异常捕捉 try...catch...finally使用。)
1.用正则表达式取出需要的字符串( @".\$([A-Za-z0-9]{13})\$.||.\#([A-Za-z0-9]{13})\#.||.\([A-Za-z0-9]{13})\.||.\%([A-Za-z0-9]{13})\%.||.\€([A-Za-z0-9]{13})\€.")有些机型发现闪退用 异常捕捉 try…catch…finally使用for (NSString *rege...原创 2018-12-17 12:38:19 · 1325 阅读 · 0 评论 -
IOS编码规范(命名规范)
⼀一.命名规则命名总则:1.使⽤用驼峰法命名,命名清晰明了,要做到⾃自描述,不能省略,部分cocoa通 ⽤用缩略词能够缩写。Objective – C不⽀支持名字命名空间,所以某些命名要加项⺫⽬目前缀区别。需要加前缀的地⽅方: 全局变量,类名,全局函数,category(每个类别,函数都必须添加前缀)3.全局变量前缀为g+项⺫⽬目前缀4.常量以k开头。变量命名:1.局部变量命名...原创 2018-12-30 15:00:21 · 1537 阅读 · 0 评论 -
iOS Keychain《一》使用和封装
iOS keychain 是一个相对独立的空间,保存到keychain钥匙串中的信息不会因为卸载/重装app而丢失, 。相对于NSUserDefaults、plist文件保存等一般方式,keychain保存更为安全。所以我们会用keyChain保存一些私密信息,比如密码、证书、设备唯一码(把获取到用户设备的唯一ID 存到keychain 里面这样卸载或重装之后还可以获取到id,保证了一个设备一个I...原创 2019-05-22 14:50:06 · 2485 阅读 · 0 评论 -
Ios Keychain《二》的三种使用方法
demo下载上一篇介绍了Keychain的基本内容接下来介绍三种的使用keychain的使用这里总结keychain三个使用方法,分别是苹果官方的KeychainItemWrapper第三方封装sskeychain通过Security.framework框架使用这三个方法我最推崇的是使用sskeychain这个封装的方案,更加简单方便,下载和使用地址在后面,现在开始说下每一个方法...原创 2019-05-30 20:32:58 · 3880 阅读 · 0 评论 -
Ios UIDocumentInteractionController (预览类似pdf、doc、ppt等类型文件的类)
UIDocumentInteractionController是OC语言的一个类,但是他并不是一个controller,而是一个继承自NSObject类一、主要作用:预览类似pdf、doc、ppt等类型文件的类。可以将用户接收到的文件分享到用户手机上的其他App中。二、使用方式:1.预览文件,并可以分享文件,如图12.直接分享文件,如图2三、使用方法:1.创建一个UIDoc...原创 2019-07-15 16:55:47 · 2572 阅读 · 0 评论 -
ios 数据泄露
前提:移动端的数据窃取是一个非常严重的问题,哪些保存着重要数据的设备丢失或被盗,不要让攻击者通过物理手段来读取到数据,在本文章介绍几种数据泄露方式。1.解密NSLog 和苹果日志NSLog:在调试时将消息发送到Xcode控制台,在设备上运行时将消息发送到系统全局日志,然后由NSLog记录数据可以被任何拿到物理设备,和其他缓存的应用程序类似。在发布版本中禁用NSLog移除NSLog输...原创 2019-07-29 16:00:40 · 1071 阅读 · 0 评论 -
iOS录屏和截屏监听(以及出现的bug)
需求:出于项目安全性方面的考虑增加保护,需要在APP内敏感页面输入框做防用户截屏录屏的功能截屏应用中只会收到已经截屏的通知并没办法干预不能截屏,所以截屏我们只能做到提示的作用做法:在需要防止截屏的控制器里面加通知[[NSNotificationCenter defaultCenter] addObserver:observer ...原创 2019-08-23 19:39:56 · 3907 阅读 · 0 评论 -
iOS 自定义tabBar
目前主流app架构(只是大多数)一般tabar设置的内容原创 2019-09-29 16:31:17 · 2385 阅读 · 2 评论