
iOS
吾身三省
技术路曼曼其修远兮,吾将上下而求索。
一万年太久,只争朝夕。
展开
-
ApplePay开发过程中遇到的问题--调试时可以支付,打包后无法支付
最近对接银联的ApplePay支付功能,按照说明文档一切都很顺利,调试过程中也可以支付。其中merchantID的设置方式如下:1,创建了两个merchantID:正式merchantID,测试merchantID。2,为正式App ID绑定上面两个merchatID。3,为测试App ID绑定上面两个merchatID。遇到的问题如下:【问题1】:对测试App打包后进行测试时,即使是在...原创 2019-08-07 16:02:38 · 678 阅读 · 0 评论 -
TabbarController架构的App中tabbar的控制
之前的代码中将self.hidesBottomBarWhenPushed = true放在了ViewController基类的下列方法中:override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)required init?(coder aDecoder: NSCoder)在不需要隐藏tabbar...原创 2019-07-09 23:05:32 · 230 阅读 · 0 评论 -
iOS库开发中遇到的问题
1,创建一个工程SDK.proj,开发一个lib.a。它依赖于一些第三方框架比如AFNetworking等等,在SDK工程中使用pod,那么SDK工程会被扩展为一个SDK.workspace。另外创建一个测试工程SDKTest.proj,无法引入SDK.workspace,调试不方便。最后只能将第三方源文件手动添加到SDK.proj中。...原创 2019-07-05 19:03:10 · 169 阅读 · 0 评论 -
Mac中批量删除包含特定字符的行
对于目录下的文件,删除所有包含关键字“Txx”的行。find ./ -name "*.txt" -exec sed -i "" '/T/d' {} \;注意:1,sed命令的-i参数是直接修改源文件。2,mac下需要在参数后面跟一个字符串作为备份文件。空字符串则不备份。3,{}与;之间有空格。...原创 2018-11-19 17:52:09 · 2917 阅读 · 1 评论 -
Mac上批量修改文件的编码格式
在Windows上创建的.txt文件在Mac上是乱码,批量转换文件命令如下:mkdir outputfind *.txt -exec sh -c "iconv -f GB2312 -t UTF-8 {} > output/{}" \;原创 2018-11-19 11:18:37 · 2212 阅读 · 0 评论 -
git代码提交时二进制文件冲突
如题。问题背景:开发中遇到了一个奇怪的问题–调试时的App正常,但是代码上传后通过服务器打包后的App运行不正常。由于无法调试,所以只能通过加log的方式定位问题。后来发现加的log并没有输出,忽然意识到在用sourceTree提交自己做的framework的代码时发生了冲突,而我解决冲突的方式是直接选择了让sourceTree自己解决冲突。sourceTree解决文本文件的冲突还可以,但是看...原创 2018-10-31 19:43:37 · 1883 阅读 · 0 评论 -
iPhone屏幕尺寸
设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS 2.4 inches (62.1 mm) 4.5 inches (115.5 mm) 3.5-inch320x480 @1x 320x480 163 4(s) 2.31 inches...原创 2018-07-23 15:51:50 · 1833 阅读 · 0 评论 -
如何使用awk命令对省市文件进行处理
在App开发过程中会遇到指定省市的需求,为了同服务端保持一直,一般是将省市从服务端导出来,但是需要将文件格式改为适合客户端的格式,一般是plist文件。原文件格式: 目标plist文件的格式:... <dict> <key>values</key> <array> <dict> ...原创 2018-05-29 22:19:17 · 197 阅读 · 0 评论 -
UIPageControl自定义图片时发生崩溃的问题
在使用UIPageControl时,需要对图片进行自定义。通过下面的方法: self.pageControl.setValue(UIImage(named: "run_cc_scrollview_pagecontrol_icon_selected"), forKey: "currentPageImage") self.pageControl.setValue(UIImage(...原创 2018-04-09 17:50:56 · 1370 阅读 · 0 评论 -
【即时通信1】--用Socket实现基本的点对点和服务器中转消息通信
本文阐述如何通过socket实现局域网内两个设备之间的通信。有两种方式: 1,通过socket直接在两个iOS设备之间进行对等通信(Pear to Pear)。 2,通过服务器中转的方式,间接实现两个iOS设备之间的通信。OSI七层协议模型CocoaAsyncSocketiOS端使用CocoaAsyncSocket框架来调用底层socket。TCP的调用流程下体如下图:...原创 2018-03-07 15:57:42 · 3751 阅读 · 0 评论 -
浮点数精度问题
由于计算机只能表示二进制整数和小数,因为并不是所有浮点数都能准确表示为二进制数,这些浮点数在计算机中的表示是不精确的。 我们判断两个浮点数A和B是否相等,并不能直接用==,而需要用abs(A - B) < FLT_EPSILON来判断,FLT_EPSILON是最小单精度浮点数。问题描述: 近日做语音播报距离的时候遇到一个问题。需要先将以米作单位的距离d,分解为xx公里xx百x十米(个位数字直接舍原创 2018-03-02 18:55:17 · 362 阅读 · 0 评论 -
进一步理解GCD
之前转了一篇GCD的文章–iOS中的GCD,近日重新理解了一下GCD。 iOS中实现并行的方式有三种:操作队列(Operation Queue),调度队列(Dispatch Queue)和线程。 注意:Swift将GCD进行了对象化。我们可以使用DispatchQueue和DispatchGroup的实例方法操作GCD,更符合面向对象的思想。文中代码在Swift4中运行良好。GCD(...原创 2018-03-01 10:32:37 · 291 阅读 · 0 评论 -
使用套接字和套接字流
本文来源自: https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/NetworkingTopics/Articles/UsingSocketsandSocketStreams.html#//apple_ref/doc/uid/CH73-SW1本文从POSIX到基础库(Foun原创 2018-02-28 17:26:41 · 286 阅读 · 0 评论 -
CFNetwork编程概要
本文是对官方文档的翻译,官方文档地址如下: https://developer.apple.com/library/content/documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001132-CH1-DontLinkElementID_30CF翻译 2018-02-27 13:57:31 · 374 阅读 · 0 评论 -
用iOS模拟器安装App
背景介绍: Mac机器A上面有工程P的源码,Mac机器B上没有源码,想在B的模拟器上运行应用P。步骤: 1,在机器A上,build模拟器版本,得到模拟器下的app文件:/Users/work/Library/Developer/Xcode/DerivedData/*-daajgszwtouixcfnoaiawbxybpvd/Build/Products/DebugTest-iphonesimul原创 2018-01-10 14:02:25 · 11374 阅读 · 0 评论 -
使用HealthKit过程中遇到的坑
公司项目需要连接心率带设备,参考了竞品的实现方式后,决定采用读取系统健康应用数据的方式实现,即健康应用与蓝牙心率带(BLE)通信读取实时心率,我们的App读取一定时间(3s)内健康应用中的心率数据用作实时心率。 蓝牙设备扫描、连接、读取已连接的设备、读取健康数据等等都没有遇到太多麻烦。问题1:打包ipa,Applicaiton Loader在验证资源的过程中报错: 分析: 我并没有用到写数原创 2018-01-05 22:30:47 · 2758 阅读 · 0 评论 -
关于 Unbalanced calls to begin/end appearance transitions
【前提】 项目中有个需求:点击App的远程推送消息后,跳转到指定页面。具体跳转过程是:点击推送后先跳转页面A,如果满足条件立刻跳转到页面B,如果不满足立刻跳转到页面C。【问题】 当App在后台运行时,这个跳转没有问题,可以跳转到指定页面B或者C。但是当App没有运行时,会卡在页面A上,并没有跳到B或者C。如果点击返回按钮,会显示一个黑屏,像是崩溃了,实际并没有崩溃。查看log,里面有一句:Unb原创 2018-01-04 12:06:17 · 1136 阅读 · 0 评论 -
关于Charles抓包https时,无法查看CONNECT请求的问题
问题: 按照一般流程操作后,发现Get/Post请求都可以查看,但是有些CONNECT请求无法查看。解决方案: 需要在Proxy Settings - Proxies HTTP Proxy中勾选Enable transparent HTTP proxying 就可以了。存疑: 这些CONNECT请求并不是App主动发出的,是什么是否发出的?原创 2017-12-29 10:44:50 · 25806 阅读 · 2 评论 -
创建第一个库
由于公司业务需要,希望把原来直接加入到工程中的C++代码封装成库,供第三方使用。在这里做个总结:创建动态库还是静态库 我们知道静态库的目的是对功能的封装,静态库中的函数是要通过静态链接器跟工程源码链接在一起形成最终的可执行文件。而动态链接库的向我们的应用提供了一种调用外部代码的方式,使得我们的应用在链接的时候只需要“接入”动态链接库的地址而非源码,这样减小了可执行文件的体积。但是由于苹果的原创 2017-11-05 21:20:46 · 838 阅读 · 0 评论 -
关于iOS图形上下文环境(CGContext)的操作
CGContext是Quartz2D的描画环境,包括了描画参数以及将图渲染到目标页面上需要的所有设备相关的信息,目标页面可能是应用窗口,位图,PDF文档或者打印机。 每个图形上下文环境环境包含一个图形状态栈。基本知识图一:CG坐标系跟UI坐标系 图二:层的position和anchorPoint 接口函数创建一个基于位图的图形环境作为当前环境:等价于(UIGraphicsBeginImageC原创 2017-11-01 20:57:14 · 3177 阅读 · 0 评论 -
如何用约束设置UITableView的tableHeaderView,其中tableHeaderView的高度是动态变化的
用约束设置UITableView的tableHeaderView,是个常见需求。步骤如下: 1,自定义视图,作为UITableView的tableHeaderView。视图的布局用约束实现。另外要实现两个函数:函数1:计算视图的合适的大小。当用户调用视图的SizeToFit方法时会调用该方法计算大小。override func sizeThatFits(_ size: CGSize) -> CG原创 2017-10-31 15:07:17 · 2485 阅读 · 0 评论 -
iOS11中的定位授权
前台定位权限1,增加NSLocationWhenInUseUsageDescription。 2,创建CLLocationManager对象,在使用定位服务前调用requestWhenInUseAuthorization()。 3,通过func locationManager(_ manager: CLLocationManager, didCha原创 2017-09-13 14:09:22 · 29106 阅读 · 1 评论 -
升级到XCode9(BaseSDK:iOS11)的各种坑 持续更新中
XCode9和iOS11 beta了不知多少版本了,正式版本还没有正式发布。我也终于忍不了了,还是都做了升级。设备版本分别为: XCode:Version 9.0 beta 6 (9M214v) 10月13日更新GM版 iPhone:11.0(15A5370a)下面的问题都是在iOS11之前的版本运行完好,但是升级后出现的问题: 1,定位相关 问题描述:无法定位,而且程序在安装后第一次访问定原创 2017-09-13 13:55:05 · 19005 阅读 · 11 评论 -
iOS11 Framework Core ML
参考:https://developer.apple.com/documentation/coreml一,概要通过Core ML,可以将经过训练的机器学习模型继承到应用中。 训练模型是将机器学习算法应用在一个数据集合上的结果。这个模型可以进行基于新输入数据的预测。例如,一个对区域房产价格进行训练过的模型,能够根据卧室跟卫生间的个数预测房屋价格。 Core ML是特定领域框架的基础。它支持图像翻译 2017-09-03 18:26:32 · 795 阅读 · 0 评论 -
iOS语音开发--Core Audio
一,参考Apple devleop Document:Core Audio Essentials Audio Session Programming Guide(https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/Introduction/In原创 2017-08-11 16:10:21 · 2168 阅读 · 0 评论 -
iOS逆向之一--第一个tweak工程
目标:改变越狱手机的桌面上的标题;并弹出一个对话框。坑1: /opt/thios/bin/nic.pl,要选择iphone/tweak。 坑2:执行make,提示: Makefile:8: /makefiles/common.mk: No such file or directory Makefile:13: /tweak.mk: No such file or directory make原创 2017-08-09 23:09:09 · 2067 阅读 · 0 评论 -
iOS 蓝牙开发基础
参考SDK:Core Bluetooth Programming Guide1,框架总览 2,中心和外设 中心:需要数据方 外设:提供数据方3,中心,外设,外设数据的表示 3.1 中心侧对象 3.2 外设侧对象 4,中心侧任务 4.1 建立中心管理者对象 myCentralManager = [[CBCentralManager alloc] initWithDel翻译 2017-08-09 16:03:52 · 561 阅读 · 0 评论 -
iOS Universal Link
iOS Universal Link参考文章1,https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW1 2,http://blog.youkuaiyun.com/yohunl原创 2017-07-06 19:39:53 · 1584 阅读 · 0 评论 -
使用XCode进行iOS App性能优化
instrument中的Time Profiler在真机状态下,启动instrument中的Time Profiler,点击Record按钮后,并没有函数调用栈显示出来,原因未知。instrument中的LeaksXCode7中 使用Leaks,instrument总是异常退出。instrument中的GPU DriverBuffer Flip Count : 使用的缓存量Buffer Swap原创 2016-11-18 17:25:21 · 572 阅读 · 0 评论 -
ARC下的内存管理
## 属性和实例变量的区别? #### 声明属性时,strong 和 copy的区别? #### 属性的其它修饰符: assign, weak #### block的内存管理 ##### OC中有三种类型的block ###### block用什么内存属性修饰 ###### block使用的另外两个注意点 ##### property的属性和默认属性 ##原创 2016-11-09 11:36:49 · 384 阅读 · 0 评论 -
iOS安全及录屏相关问题
iOS安全及录屏相关问题iOS安全机制iOS自带的安全机制是什么?我们能做那些事,不能做那些事? iOS的安全机制主要有: -更小的受攻击面。例如,iOS不支持Java跟Flash,不能处理psd文件,不支持部分mov文件。 -权限分离。iOS使用用户、组合其他传统Unix文件权限机制分离了个进程。 -代码签名机制。所有的二进制文件和类库在被内核允许执行前都必须经过收信人机构(比如苹果公司原创 2016-11-07 08:18:52 · 1718 阅读 · 0 评论 -
深入理解RunLoop
转载自http://www.cocoachina.com/ios/20150601/11970.htmlCFRunLoop内部实现/// 用DefaultMode启动void CFRunLoopRun(void) { CFRunLoopRunSpecific(CFRunLoopGetCurrent(), kCFRunLoopDefa转载 2016-10-31 01:22:16 · 332 阅读 · 0 评论 -
iOS/OS X中的高精确度定时器
原文地址:https://developer.apple.com/library/content/technotes/tn2169/_index.htmliOS/OS X中的高精确度定时器。。。Timer工作原理iOS和OS X中有很多API允许等待特定的一段时间。这些API可能是C或者Objective C写成的,他们有不同类型的参数,但是它们在内核中都以翻译 2016-10-30 20:20:40 · 2763 阅读 · 0 评论 -
关于iOS平台监控和直播的实现
一、相关协议(一)拉流不同流式传输的实现需要不同的传输协议。目前来说,传输实时数据采用实时传输协议/用户数据报协议(RTP/UDP),而控制信息采用 HTTP/TCP 来传输。图 2-1 流媒体协议层次图Fig 2-1 Streaming protocol hierarchy diagram在异步传输传输过程中,将数据文件分解成为许多包,每个包根据网络的不同会选择的原创 2016-10-07 18:12:58 · 3024 阅读 · 0 评论 -
iOS中的GCD
iOS开发多线程篇—GCD介绍一、简单介绍1.什么是GCD?全称是Grand Central Dispatch,可译为“牛逼的中枢调度器”纯C语言,提供了非常多强大的函数 2.GCD的优势GCD是苹果公司为多核的并行运算提出的解决方案GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调转载 2016-09-30 10:06:26 · 464 阅读 · 0 评论 -
关于UIImageView显示图片的不同样式
用UIImageView显示图片时,有时图片会被拉伸,这是因为UIImageView继承自UIView,UIView的默认的适配内容的方式是“拉伸填充式”,所以我们看到的图片就被拉伸变形了。如果不想图片被拉伸,还有其他的显示样式可供选择:1,UIViewContentModeScaleToFill拉伸填充式,会改变长宽比例。2,UIViewContentModeScaleAspectF原创 2016-09-06 14:45:26 · 1163 阅读 · 0 评论 -
iOS中的事件处理
iOS框架中的事件处理类是UIResponder,他可以处理以下三类事件:事件说明 触摸事件 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;一根或多根手指开始触摸屏幕时执行;- (void)touchesMove原创 2016-09-01 12:45:59 · 581 阅读 · 0 评论 -
iOS Push原理
Push的原理:Push 的工作机制可以简单的概括为下图图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider。 APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器。上图可以分为三个阶段。第一阶段:.net应用程序把要发送的消息、目的iPho转载 2016-08-17 18:07:32 · 500 阅读 · 0 评论 -
iOS CoreData简介及使用中的注意点
CoreData相关类图1,iOS中使用CoreData时,如果对数据库表(Entity)或者表中的字段(Attribute)进行了增删改的操作,可能会抛出NSInternalConsistencyException异常,需要创建新的模型版。2,如何删除versioned model。3,CoreData在多线程中的使用。原创 2016-08-17 15:22:22 · 930 阅读 · 0 评论