IOS开发
文章平均质量分 87
Maxdong24
IOS开发、资深测试开发
Oracle认证OCP、Linux认证RHCE
现就职于网易
展开
-
测试开发-iOS真机Crash Log 的获取和分析
本文主要介绍iPhone的crash log获取方式和log的符号化处理,通过符号化流程可封装成脚本,稳定测试monkey中可直接对捕获的crash log进行解析原创 2022-09-20 16:00:01 · 1584 阅读 · 1 评论 -
IOS-Run loop学习总结
不知道大家有没有想过这个问题,一个应用开始运行以后放在那里,如果不对它进行任何操作,这个应用就像静止了一样,不会自发的有任何动作发生,但是如果我们点击界面上的一个按钮,这个时候就会有对应的按钮响应事件发生。给我们的感觉就像应用一直处于随时待命的状态,在没人操作的时候它一直在休息,在让它干活的时候,它就能立刻响应。其实,这就是run loop的功劳。一、线程与run loop1.1 线程任务的类型原创 2017-02-21 13:58:07 · 2202 阅读 · 1 评论 -
IOS-视图、动画渲染机制探究
可以看出iOS渲染视图的核心是 Core Animation。从底层到上层依此是 GPU->(OpenGL、Core Graphic) -> Core Animation -> UIKit。 在 iOS上,动画和视图的渲染其实是在另外一个进程做的(下面我们叫这个进程 render server),在 iOS 5 以前这个进程叫 SpringBoard,在 iOS 6 之后叫 BackBoard。在转载 2017-02-21 13:43:23 · 482 阅读 · 0 评论 -
IOS- 对GCD的理解
GCD为Grand Central Dispatch的缩写。Grand Central Dispatch(GCD)是Apple开发的一个多核编程的较新的解决方法。在Mac OSX 10.6雪豹中首次推出,并在最近引入到IOS4.0。GCD是一个替代诸如NSThread等技术的很高效和强大的技术。GCD完全可以处理诸如数据锁定和资源泄漏等复杂的异步编程问题。GCD可以完成很多事情,但原创 2015-02-13 09:11:11 · 1238 阅读 · 0 评论 -
IOS-内存管理
Objective-C提供了三种内存管理方式:manual retain-release(MRR,手动管理),automatic reference counting(ARC,自动引用计数),garbage collection(垃圾回收)。iOS不支持垃圾回收;ARC作为苹果新提供的技术,苹果推荐开发者使用ARC技术来管理内存;这篇笔记主要讲的是手动管理。(一)内存管理的目的是:转载 2014-12-23 19:08:40 · 543 阅读 · 0 评论 -
IOS-静态库,动态库与 Framework
静态库与动态库的区别首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用。 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件。另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一原创 2017-02-17 09:50:42 · 505 阅读 · 0 评论 -
IOS-Realm 数据库在移动端的使用
用 Realm 数据库做一个简单的通讯录 1.要使用 Realm 数据库, 首先要导入 Realm.framework 这个框架, 从Realm官网上可以下载,我使用的是realm-objc-2.0.3 这个版本, 下载解压完成后, 将iOS文件夹中的 static文件中的静态库拖到工程中. 2.然后点击 Targets, 选择工程, 点击 Build Phases, 添加libz.tbd 和原创 2017-01-16 14:28:14 · 195 阅读 · 0 评论 -
IOS-AFNetworking与ASIHTTPRequest的区别
一、底层实现1、AFN的底层实现基于OC的NSURLConnection和NSURLSession2、ASI的底层实现基于纯C语言的CFNetwork框架3、因为NSURLConnection和NSURLSession是在CFNetwork之上的一层封装,因此ASI的运行性能高于AFNAFNetworking地址: https://github.com/AFNetworking/AFNetworki原创 2017-01-10 22:03:29 · 552 阅读 · 0 评论 -
IOS-简单易懂的Block回调使用
Block 回调实现首先解释一下我们例子要实现什么功能(其实是烂大街又最形象的例子): 有两个视图控制器 A 和 B,现在点击 A 上的按钮跳转到视图 B ,并在 B 中的textfield 输入字符串,点击 B 中的跳转按钮跳转回 A ,并将之前输入的字符串 显示在 A 中的 label 上。也就是说 A 视图中需要回调 B 视图中的数据。 想不明白的同学可以看一看最终实现的效果图: 首先原创 2017-01-13 16:23:59 · 180 阅读 · 0 评论 -
IOS-应用程序生命周期(前后台切换,应用的各种状态)详解
Not running 未运行 程序没启动 Inactive 未激活 程序在前台运行,不过没有接收到事件。在没有事件处理情况下程序通常停留在这个状态Active 激活 程序在前台运行而且接收到了事件。这也是前台的一个正常的模式Backgroud 后台 程序在后台而且能执行代码,大多数程序进入原创 2016-12-27 15:38:05 · 413 阅读 · 0 评论 -
IOS-如何处理多个网络请求的并发的情况
如何处理多个网络请求的并发的情况一、概念1.并发 当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。2.并行 当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,原创 2016-12-19 14:00:15 · 4334 阅读 · 0 评论 -
IOS-iOS10 <UserNotification>推送通知适配
最近在研究iOS10关于推送的新特性, 相比之前确实做了很大的改变,总结起来主要是以下几点:1.推送内容更加丰富,由之前的alert 到现在的title, subtitle, body 2.推送统一由trigger触发 3.可以为推送增加附件,如图片、音频、视频,这就使推送内容更加丰富多彩 4.可以方便的更新推送内容import 新框架添加新的框架 UserNotifications.fram原创 2016-11-18 17:07:06 · 1466 阅读 · 0 评论 -
IOS-HTTP/Socket/TCP/IP通信协议学习总结
一:概念的理解什么是Socket? Socket又称之为“套接字”,是系统提供的用于网络通信的方法。它的实质并不是一种协议,没有规定计算机应当怎么样传递消息,只是给程序员提供了一个发送消息的接口,程序员使用这个接口提供的方法,发送与接收消息。Socket描述了一个IP、端口对。它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息。所以,Socke原创 2017-02-22 10:17:07 · 892 阅读 · 0 评论 -
iOS开发-关于iOS11适配的一些坑
安全区域(Safe Area) 在iOS11以前, 自定义UIViewController时, 从来没有考虑过topLayoutGuide和bottomLayoutGuide这两个属性.但是在iOS11出来之后,这两个属性被废弃,取而代之的就是safeArea的概念,safeArea是描述你的视图部分不被任何内容遮挡的方法。 它提供两种方式:safeAreaInsets或safeAreaLayou原创 2017-12-22 15:05:23 · 1520 阅读 · 0 评论 -
IOS开发-基于WebDriverAgent代理服务,实现iOS手机app自动化测试的框架搭建
导引iOS自动化测试一直使用的appium,iOS系统升级至10.0 Xcode8.0之后,改用WebDriverAgent代理服务作为server,编写了一套基于WebDriverAgent服务 app客户端自动化框架。并实现了自动化测试app的demo。一:整体框架设计首先是WebDriverAgent服务原理以及WDAClient以及ruby测试脚本调用框架图如下: 二:WebDriverA原创 2017-07-20 15:52:37 · 3673 阅读 · 0 评论 -
IOS- 加密解密(MD5/AES/DES等)
关于iOS加密解密,系统有提供一套C接口的API,在CommonCrypto中。具体从哪个版本开始有的我不清楚,但是iOS5.0中已经有了。 本文简单的归纳了一下iOS使用的各种加密解密算法(因为比较简单,所以本文不涉及具体的代码实现。未提及RSA加密算法的相关信息)。 对数据加密后进行保存/传输用得较多的是AES和DES,都是对称加密,相对来说AES速度块,安全性高。3DES使用三个密钥,虽然原创 2017-02-27 10:38:37 · 973 阅读 · 0 评论 -
IOS- 框架模式(简述 MVC,MVP,MVVM 和 VIPER)
MV(X)系列概要 做iOS开发也有一段时间了,最近闲暇之余总结了一下几个iOS框架,每个人对架构和设计模式都有不同的理解,在此记录下我的一些小见解,仅供参考,欢迎批评指正。当今我们已经有很架构设计模式方面的选择:A.MVCB.MVPC.MVVMD.VIPER前三种设计模式都把一个应用中的实体分为以下三类:Models–负责主要的数据或者操作数据的数据访问层,可以想象 Perspn 和 Pers原创 2017-02-22 13:33:46 · 2607 阅读 · 1 评论 -
IOS- 即时通讯原理,使用XMPPFramework实现即时通信
即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。前者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格保证数据正确性的文件传输协议。而后者是以数据报的形式,对拆分后的数据的先后到达顺序不做要求的文件传输协议。QQ就是使用UDP协议进原创 2017-02-23 09:23:45 · 1369 阅读 · 0 评论 -
IOS-Runtime学习总结
Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西。最近在学习Runtime,有自己的一些心得,整理如下, 一为 查阅方便 二为 或许能给他人一些启发, 三为 希望得到大家对这篇整理不足之处的一些指点。什么是Runtime我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomething];会被转化原创 2017-02-17 10:22:30 · 354 阅读 · 0 评论 -
IOS-SDWebImage 底层实现原理以及面试题相关问题的学习链接
SDWebImage是一个图片缓存的框架。相较于AFNetworking集成的UIImageView+AFNetworking.h,对于图片的缓存实际应用的是NSURLCache自带的cache机制。 NSURLCache每次都要把缓存的raw data 再转化为UIImage,就带来了数据处理和内存方面的更多操作。 SDWebImage的缓存由SDImageCache类来实现,原创 2016-12-19 10:06:27 · 7301 阅读 · 0 评论 -
IOS-WKWebView的使用以及Cookie的处理
其实和UIWebView的用法没什么区别,但是WKWebView相对于UIWebView强大了很多,内存的消耗相对少了,所提供的接口也丰富了。WKWebView的代理方法:WKNavigationDelegate代理的使用:该代理提供的方法,可以用来追踪加载过程(页面开始加载、加载完成、加载失败)、决定是否执行跳转。// 页面开始加载时调用- (void)webView:(WKWebView *原创 2016-11-15 10:08:50 · 8031 阅读 · 0 评论 -
IOS-AFNetWorking原理使用学习链接
推荐几个学习的博客链接:AFNetworking框架实现原理 http://blog.csdn.net/NeXTSTEP110/article/details/50760800iOS之AFNetworking实现原理和使用方法 http://blog.csdn.net/li_shuang_ls/article/details/49685091AFNetworking3.0的基本使用方法 ht原创 2017-02-22 11:15:18 · 725 阅读 · 0 评论 -
IOS- 企业App"无法升级安装应用程序 因为证书无效"的解决方案
今天调试自己开发的一款企业级App,发现通过之前的url无法升级安装企业应用,一直提示“无法安装应用程序 因为http://xxx.xxx.xxx证书无效”,折腾了一番,终于在StackOverFlow上找到了答案。在这里分享给大家。 StackOverFlow接:http://stackoverflow.com/questions/20276907/enterprise-app-deploym原创 2016-12-22 09:20:24 · 6645 阅读 · 0 评论 -
IOS-Xcode8报出 "XXX/XXX.m is missing from working copy" 警告的问题
本来项目没有用pod管理第三方,后来为了解决SDWebImage弃用的警告:SDWebImage:'initWithRequest:delegate:start Immediately:' is deprecated: first deprecated in iOS 9.0 - Use NSURLSession (see NSURLSession.h)我就用pod管理SDWebImage,之后我删除原创 2016-12-22 10:07:50 · 668 阅读 · 0 评论 -
IOS-单例模式
单例 第一、基本概念 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问。 第二、在IOS中使用单例模式的情况 1.如果说创建一个对象会耗费很多系统资源,那么此时采用单例模式,因为只需要一个实例,会节省alloc的时间 2.在IOS开发中,如果很多模块都要使用同一个变量,此时如果把该变量放入单原创 2016-10-30 21:06:50 · 350 阅读 · 0 评论 -
IOS-为什么很多内置类如UITableViewController的delegate属性都是assign而不是retain的?
如题目原因是:会引起引用,若是retain,在alloc一次之后,若release一次,会导致内训泄露,若release两次会导致两个对象的dealloc嵌套执行,结果就是都没有执行成功,最后崩溃了!所有的引用计数系都存在循环应用的问题。例如下面的引用关系:*对象a创建并引用到了对象b.*对象b建并引用到了对象c.*对象c创建并引用到了对象b.这时候b和c的引用计数分别是2和1.当a不再使原创 2015-02-14 09:41:49 · 1561 阅读 · 0 评论 -
IOS-分析JSON、XML的区别?JSON、XML解析方式的底层是如何处理的?
区别:1)可读性方面:基本相同,xml的可读性比较好2)可扩展性方面:都具有很好的扩展性3)编码难度方面:相对而言:JSON的编码比较容易4)解码难度:json解码难度基本为零,xml需要考虑子节点和父节点5)数据体积方面:json相对于xml来讲,数据体积小,传递的速度更快些6)数据交互方面:json与JavaScrpit的交互更加方便,更容易解析处理,更好的数据交互原创 2015-02-14 09:09:42 · 2534 阅读 · 0 评论 -
IOS-Objectiv-C(OC)相关知识点。
1、我们说的OC是动态运行时语言是什么意思?多态。主要是将数据类型的确定由编译时,推迟到了运行时。涉及两个概念,运行时和多态。简单来说,运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法。多态:不同对象以自己的方式响应相同的消息的能力叫做多态。意思是假设生万物类(life),都用一个相同的方法-eat;那人类就属于生物,猪也属于生物,都继承了l原创 2015-02-13 10:12:52 · 659 阅读 · 0 评论 -
IOS-什么时候用delegate,什么时候用Nofication?
大家都知道delegate和notification都是为了在不同的对象之间传递数据,下面简单介绍一下两者:delegate针对one-to-one关系,并且reciever可以返回值给sender,nofication可以针对one-to-one/amny/noe,reciever无法返回值给sender.所以,delegate用于sender希望接收到reciever某个功能反馈值,n原创 2015-02-13 09:55:17 · 1035 阅读 · 0 评论 -
IOS-Socket和http连接的区别
1、Socket连接和Http连接的区别简单来说,浏览的网页都是以http协议传输到你的浏览器,而http是基于socket之上的。socket是一套完成tcp udp协议的接口。HTTP协议:简单对象访问协议,对应于应用层,HTTP协议是基于TCP连接的。 TCP协议:对应于传输层 IP协议:原创 2015-02-13 08:20:40 · 2502 阅读 · 0 评论 -
IOS-对UIView、UIWindow、和CALayer的理解
UIView:属于UIkit.framework框架,负责渲染矩形区域的内容,为矩形区域添加动画,响应区域触摸事件,布局和管理一个或多个子视图.UIWindow:属于UIKit.framework框架,是一种特殊的UIView,通常在一个程序中只会有一个UIWindow,但可以手动创建多个UIWindow,同时加到程序里面。UIWindow在程序中主要起到三个作用:1、作为容器,包原创 2015-02-13 10:32:19 · 829 阅读 · 0 评论 -
IOS-进程与线程, 堆和栈之间区别
线程和进程:进程有独立的地址空间,一个进程崩溃后,在保护模式的影响下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等同于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。线程原创 2015-02-11 10:25:39 · 900 阅读 · 0 评论 -
IOS-Push通知
1.The app register for push notifications The OS asks APNS for a device token | APNS Server 2.The app receives the device token原创 2016-10-30 21:12:10 · 389 阅读 · 0 评论 -
IOS-ViewController的生命周期分析和使用
一、结构 按结构可以对iOS的所有ViewController分成两类: 1、主要用于展示内容的ViewController,这种ViewController主要用于为用户展示内容,并与用户交互,如UITableViewController,UIViewController。 2、用于控制和显示其他ViewController的ViewController。这种ViewController一般原创 2016-10-30 21:39:04 · 437 阅读 · 0 评论 -
IOS-关于App Transport Security相关说明及适配
iOS9中新增App Transport Security(简称ATS)特性, 主要使到原来请求的时候用到的HTTP,都转向TLS1.2协议进行传输。这也意味着所有的HTTP协议都强制使用了HTTPS协议进行传输。原文如下: App Transport Security App Transport Security (ATS) enforces best practices in th原创 2016-12-13 15:45:11 · 7333 阅读 · 0 评论 -
IOS-Xcode8 及 iOS10遇到的问题小结
更新了Xcode8 以及 iOS10,App访问用户的相机、相册、麦克风、通讯录的权限都需要重新进行相关的配置,不然在Xcode8中打开编译的话会直接crash.需要在info.plist中添加App需要的一些设备权限。 相机NSCameraUsageDescription 相册NSPhotoLibraryUsageDescription 通讯录NSContactsUsageDescripti原创 2016-10-31 20:39:03 · 2443 阅读 · 0 评论 -
IOS-CoreData的使用详解
前言:很多小的App只需要一个ManagedContext在主线程就可以了,但是有时候对于CoreData的操作要耗时很久的,比如App开启的时候要载入大量数据,如果都放在主线程,毫无疑问会阻塞UI造成用户体验很差。通常的方式是,主线程一个ManagedContext处理UI相关的,后台一个线程的ManagedContext负责耗时操作的,操作完成后通知主线程。使用CoreData的并行主要有两种方原创 2016-11-24 16:38:39 · 933 阅读 · 0 评论 -
IOS-Scheme详解
一、什么是scheme?我们知道在ios的程序中,由于沙盒的限制,导致程序之间相互隔离,没有一个有效的办法进行相互通信。但是也不是完全不可能实现,我们可以通过scheme url来实现程序间的通信。典型的应用就是支付宝,新浪分享,微信分享。当你在一个网页中进行浏览的时候,如果你已经安装了支付宝的话,你点击支付功能的话,就通过设置的scheme url跳转到支付宝的支付界面。二、配置scheme如何实原创 2016-11-22 10:36:37 · 1127 阅读 · 0 评论 -
IOS-dispatch_async 、dispatch_sync与 dispatch_get_global_queue 的使用方法
第一部分GCD (Grand Central Dispatch) 是Apple公司开发的一种技术,它旨在优化多核环境中的并发操作并取代传统多线程的编程模式。 在Mac OS X 10.6和IOS 4.0之后开始支持GCD。什么是 GCD GCD 是 libdispatch 的市场名称,而 libdispatch 作为 Apple 的一个库,为并发代码在多核硬件(跑 iOS 或 OS X )上执行提原创 2016-11-18 15:31:34 · 5628 阅读 · 0 评论 -
IOS-FaceBook,Twitter分享的问题
IOS-FaceBook,Twitter分享的问题在做FaceBook和Twitter分享的时候,遇到了几个问题: 1.点击分享,程序闪退。 2.点击分享,没有任何反应,没有任何提示。经过用国内手机和日本手机的测试,解决了遇到的以上两个问题。解析和总结如下:SLComposeViewController *vc = [SLComposeViewController composeViewCont原创 2016-11-14 18:57:59 · 5611 阅读 · 2 评论