iOS开发
文章平均质量分 93
GGGHub
这个作者很懒,什么都没留下…
展开
-
iOS签名原理(尼卡签名管理)
开始之前,我们先简单聊下,什么是签名?原创 2022-10-11 23:30:21 · 1069 阅读 · 1 评论 -
iOS应用签名管理工具
iOS签名管理,企业证书签名,签名管理,尼卡签名,尼卡签名管理原创 2022-09-25 22:21:51 · 2570 阅读 · 1 评论 -
NSNotification系统通知优化
最近在github上看到了LRNotificationObserver这个项目,看了一下实现方式,作者通过ARC机制实例化注册对象子类与关联对象的方法来管理注册对象的生命周期。从而省去了系统通知移除的过程,本篇介绍该项目实现过程。NSNotificationCenter 通知存在的问题注册 [[NSNotificationCenter defaultCenter] addObserver:anObs原创 2016-07-11 17:55:10 · 924 阅读 · 0 评论 -
Core Data系列文章(一)Core Data基础
在iOS开发数据库SQLite的使用介绍了iOS中使用SQLite对数据进行持久化存储,实际上是对数据库直接进行操作,而苹果专门有一套API来间接的对数据进行持久化存储,而且主要针对用户创建的对象 — Core Data。Core Data有很多强大的功能,使用图形化界面来创建对象。可以使用NSPredicate对数据进行筛选,使用NSSortDescriptor对数据进行排序。还可以通过获取属性与原创 2016-07-22 17:07:46 · 1174 阅读 · 0 评论 -
iOS开发数据库SQLite的使用
iOS系统自带Core Data来进行持久化处理,而且Core Data可以使用图形化界面来创建对象,但是Core Data不是关系型数据库,对于Core Data来说比较擅长管理在设备上创建的数据持久化存储用户创建的对象,但是要处理大量的数据时就应该优先选择SQL关系型数据库来存储这些数据。 Core Data在后台也是使用SQLite来存储数据的,但是开发人员不能直接访问这些数据,只能通过Co原创 2016-07-14 10:34:34 · 3165 阅读 · 1 评论 -
iOS 保持界面流畅的技巧
这篇文章会非常详细的分析 iOS 界面构建中的各种性能问题以及对应的解决思路,同时给出一个开源的微博列表实现,通过实际的代码展示如何构建流畅的交互。Index演示项目屏幕显示图像的原理卡顿产生的原因和解决方案CPU 资源消耗原因和解决方案GPU 资源消耗原因和解决方案AsyncDisplayKitASDK 的由来ASDK 的资料ASDK转载 2016-07-16 09:37:01 · 1019 阅读 · 0 评论 -
KVC与KVO的进阶使用
本篇主要介绍键-值编码KVC,键值观察KVO的进阶使用的一些技巧主要是一下两个方面:KVC的集合操作符KVO的手动实现方式KVC集合操作符关于集合操作符在苹果官方文档搜索Collection Operators的关键字就可以查看相关的文档。建议多看官方文档,本篇介绍也是以官方文档为基础的。如果一个对象包含一个数组或者是集合的属性那么使用valueForKeyPath获取相关的属性时可以在键的路原创 2016-07-21 11:52:09 · 1635 阅读 · 0 评论 -
深入理解Objective-C:Category
本文转自美团点评技术团队摘要无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择。但是在Objective-C 2.0中,又提供了category这个语言特性,可以动态地为已有类添加新行为。如今category已经遍布于Objective-C代码的各个角落,从Apple官方的framework到各个开转载 2016-08-07 18:09:38 · 889 阅读 · 7 评论 -
iOS项目组件化解耦
最近给公司的一个iOS项目进行组件化解耦。本身项目早期开发就不是很规范,而且刚刚开始熟悉这个项目对业务方面也不是很熟悉所以并没有对所有的模块进行组件化。而且组件化解耦后还存在一些问题在文章中都会写出来。 原理和蘑菇街 App 的组件化之路类似,但是也有一些不同并没有加入「组件A」要调用「组件B」的某个方法这种业务场景。所有组件化的模块都是「组件A」要调用「组件B」的这种情况。「组件A」与「组件B」原创 2016-10-01 11:06:26 · 7331 阅读 · 1 评论 -
UIDebuggingInformationOverlay
文章转载自UIDebuggingInformationOverlayWhile browsing UIKit’s private headers recently, I came across a class that I hadn’t seen before - UIDebuggingInformationOverlay. A Google search didn’t turn up转载 2017-05-27 14:32:37 · 1340 阅读 · 0 评论 -
浅谈iOS日志收集系统
在浅谈iOS日志收集系统中介绍了如何收集iOS崩溃日志与如何解析iOS崩溃日志,主要用到了两个工具:plcrashutil:将plcrash文件转换成苹果标准崩溃格式symbolicatecrash:符号化崩溃信息结合这两个工具写了一个脚本直接将.plcrash格式的文件符号化解析,并输出到控制台与本地文件。 主要是根据.plcrash文件中的uuid来匹配出本地默认Archive路径下对应原创 2017-05-08 19:52:48 · 16398 阅读 · 0 评论 -
iOS崩溃日志解析脚本
在浅谈iOS日志收集系统中介绍了如何收集iOS崩溃日志与如何解析iOS崩溃日志,主要用到了两个工具:plcrashutil:将plcrash文件转换成苹果标准崩溃格式symbolicatecrash:符号化崩溃信息结合这两个工具写了一个脚本直接将.plcrash格式的文件符号化解析,并输出到控制台与本地文件。 主要是根据.plcrash文件中的uuid来匹配出本地默认Archive路径下对应原创 2017-07-28 16:04:48 · 954 阅读 · 0 评论 -
WKWebView问题小结
内存泄漏当需要拦截Web页面的Javascript函数时会使用以下方法- (void)addScriptMessageHandler:(id <WKScriptMessageHandler>)scriptMessageHandler name:(NSString *)name;在Web页面需要调用以下方法window.webkit.messageHandlers.name.postMessage()原创 2017-08-31 20:10:27 · 2217 阅读 · 0 评论 -
iOS本地化与国际化最佳实践
首先要了解本地化和国际化的概念有很多人将这两者概念混淆。本地化是将应用翻译成多种语言的过程。但在本地化之前需要将应用国际化,国际化是让应用能够适应不同的语言,地区和文化的过程。国际化有两个概念需要说明一下,一个是语言,一个是区域。区域:每个区域(例如美国,中国,西班牙)文化和习俗都不一样,如果过开发一款应用需要显示时间,那么中国人习惯看的时间是这样上午 9:40,而美国人习惯看时间是这样...原创 2018-06-22 18:14:17 · 1758 阅读 · 0 评论 -
基于Core Text实现的TXT电子书阅读器
本篇文章的项目地址基于Core Text实现的TXT电子书阅读器。 最近花了一点时间学习了iOS的底层文字处理的框架Core Text。在网上也参考很多资料,具体的资料在文章最后列了出来,有兴趣的可参考一下。 本篇主要介绍实现TXT电子书阅读器设计用到的Core Text相关的用法与实现。关于Core TextCore Text是iOS底层的文字处理框架,只提供一套C函数接口,使用Core Te原创 2016-06-13 15:49:43 · 2757 阅读 · 0 评论 -
Objective-C中的同步线程的锁
概述在多线程编程中往往会遇到多个线程同时访问共享的资源,这种情况我们需要通过同步线程来避免。也就是给线程加锁。 因为Objective-C是C语言的超集。,严格的来说是真超集。所以C语言当中的pthread互斥锁在Objective-C中也可以使用,但是Objective-C中定义了本身自己的锁对象和锁协议,所以本篇介绍Objective-C中的锁。NSLockNSLocking协议@protoc原创 2016-05-09 16:01:27 · 4585 阅读 · 0 评论 -
iOS绘图系统UIKit与Core Graphics
概述iOS主要的绘图系统有UIKit,Core Graphics,Core Animation,Core Image,Open GL等,本片博文主要介绍UIKit与Core Graphics的绘图系统。关于UIKit iOS中的原生控件以UI前缀开头的类名都是由UIKit绘制的。可以说我们进行开发打交道最多的就是UIKit这个框架。关于Core Graphics Core Graphics是iO原创 2015-09-28 15:49:17 · 2010 阅读 · 0 评论 -
iOS9中UIStackView的使用
概述UIStackView是iOS 9中新增的API,类似于Android中的线性布局。UIStackView相当于一个容器,根据向UIStackView中添加视图的顺序,UIStackView会自动给这些视图添加约束,让这些视图根据内容,垂直或水平排列。由于UIStackView会自动给它里面的子视图添加约束,所以我们不必再为那些子视图添加约束,我们只要给UIStackView设置一些属原创 2015-10-19 16:17:07 · 5787 阅读 · 0 评论 -
Grand Central Dispatch(GCD)详解
概述GCD是苹果异步执行任务技术,将应用程序中的线程管理的代码在系统级中实现。开发者只需要定义想要执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可以统一管理,也可执行任务,这样比以前的线程更有效率。GCD的使用dispatch_sync与dispatch_asyncd原创 2015-09-26 22:33:45 · 1937 阅读 · 1 评论 -
利用RunTime解决由NSTimer导致的内存泄漏
NSTimer使用场景用NSTimer来实现每隔一定时间执行制定的任务,例如最常见的广告轮播图,使用NSTimer实现这个功能很简单代码如下 NSTimer *_timer; _timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(timerEvent) userInfo:nil rep原创 2015-12-09 19:08:43 · 5300 阅读 · 0 评论 -
轻量级分享框架源码与扩展说明
介绍最近花了一点时间写了一个轻量级的分享框架ThinShareSDK,源码放在github上。本篇主要介绍一下整体的设计以及使用者怎么在原有的基础上简单的扩展。接口说明分享主要分两个步骤 1. 构建模型 2. 生成分享界面并分享 id model = [OKWShareSDK webContentTitle:@"分享链接" description:@"测试分享" webpageUrl:@"原创 2015-12-25 17:46:54 · 1275 阅读 · 0 评论 -
iOS富文本(一)属性化字符串
概述iOS一些复杂的文本布局一般都是由底层的Core Text来实现的,直到iOS7苹果发布了Text Kit框架,Text Kit能够很简单实现一些复杂的文本样式以及布局,而Text Kit富文本框架用到的核心数据结构就是属性化字符串NSAttributeString,本篇文章将介绍NSAttributeString一些常用属性和使用方法。字体样式NSAttributeStr原创 2015-10-26 19:39:24 · 4011 阅读 · 1 评论 -
iOS富文本(二)初识Text Kit
概述Text Kit 是建立在Core Text上的文本布局系统,虽然没有Core Text那么强大的文本处理功能,但是对于大多数常见的文本布局用Text Kit能够很简单的实现,而不是用Core Text底层的 API去实现。在Text Kit出现以前,UITextView一直是基于WebKit构建的,而iOS7以及以后的版本UITextView都基于Text Kit来构建。原创 2015-11-30 16:40:49 · 2665 阅读 · 0 评论 -
iOS富文本(三)深入使用Text Kit
在上一篇中介绍了Text Kit的三种基本组件的关系并且简单的实现了怎么使用这三种基本组件,本片将深入的去使用这三种基本组件。NSTextStorageNSTextStorage是NSMutableAttributedString的子类,根据苹果官方文档描述是semiconcrete子类,因为NSTextStorage没有实现NSMutableAttributedString中的方法,所以说NSTe原创 2015-12-02 23:23:53 · 3946 阅读 · 0 评论 -
iOS XMPP Framework 中文概述
本篇文章翻译XMPP Framework中的Overview of the XMPP Framework部分 介绍The framework is divided into 2 parts: 1. xmpp核心部分 2. xmpp扩展(roster,XEP's,可选的支持工具等)xmpp核心部分实现了xmpp规范(RFC 3920) 请不要把聊天与xmpp混淆,xmpp全称是”可扩展消息与存翻译 2016-03-01 17:02:28 · 1861 阅读 · 0 评论 -
iOS9 class dump header
获取系统私有API,网上有很多资料总结了一下就三种方式:使用class-dump可以提取系统私有API列表使用class-dump+DumpFrameworks.pl,这个可以一次性提取所有系统Framework与PrivateFrameworks的API列表直接使用已经提取好的API列表github地址DumpFrameworks.pl代码如下:#!/usr/bin/perl## 24原创 2016-03-03 10:59:08 · 3536 阅读 · 1 评论 -
iOS数字媒体开发浅析
概述自然界中的所有看到的听到的都是模拟信号,模拟信号是随时间连续变化,然而手机电脑等信息都属于数字媒体,它们所呈现的内容就是把自然界中这些模拟信号转换成数字信号然后再传递给我们。数字信号不是连续的是离散的,只有0与1两种状态,所以要把模拟信号转化成数字信号即把这些信息数字化这一过程称作A/D(模/数)转化,要进行这一过程就要必须对模拟信号进行采样,采样率越高数字信号越接近真正的模拟信号。当然还有D/原创 2016-04-26 11:28:35 · 1371 阅读 · 2 评论 -
关于Github Pages
迁移Github Pages我稍微有一点强迫症,实在是忍受不了整洁的界面有一些推广的广告。正所谓博客平台不重要,重要的是要有干货,CSDN首页满屏的广告也就忍受了,但是自己的文章的页面有广告看着实在是不爽。没有办法迁移到了Github Pages,花了半天的时间申请域名部署网站。又花了半天的时间把CSDN上的文章迁移到了自己的网站上。我的博客新地址看起来整洁多了。以后新文章会在CSDN和github原创 2016-05-10 23:00:09 · 845 阅读 · 0 评论 -
利用NSProxy解决NSTimer内存泄漏问题
之前写过一篇利用RunTime解决由NSTimer导致的内存泄漏的文章,最近和同事讨论觉得这样写有点复杂,然后发现有NSProxy这么好用的根类,根类,根类,没错NSProxy与NSObject一样是根类,都遵守<NSObject>协议。 实际上本篇用了消息转发的机制来避免NSTimer内存泄漏的问题,无论是NSProxy与NSObject的派生类在Objective-C运行时找不到消息都会执行消原创 2016-05-11 14:13:50 · 3662 阅读 · 1 评论 -
iOS相册实现与AssetsLibrary框架使用
概述在iOS中如果想要获取手机相册里面的图片或者视频的话就要用到系统自带的AssetsLibrary框架,AssetsLibrary.framework中包含以下文件#import <AssetsLibrary/ALAsset.h>#import <AssetsLibrary/ALAssetsFilter.h>#import <AssetsLibrary/ALAssetsGroup.h>#im原创 2015-09-24 15:05:06 · 3238 阅读 · 1 评论