自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GGGHub的博客

不定期更新原创iOS技术博客

  • 博客(39)
  • 资源 (2)
  • 收藏
  • 关注

原创 iOS签名原理(尼卡签名管理)

开始之前,我们先简单聊下,什么是签名?

2022-10-11 23:30:21 955 1

原创 iOS应用签名管理工具

iOS签名管理,企业证书签名,签名管理,尼卡签名,尼卡签名管理

2022-09-25 22:21:51 2511 1

原创 iOS本地化与国际化最佳实践

首先要了解本地化和国际化的概念有很多人将这两者概念混淆。本地化是将应用翻译成多种语言的过程。但在本地化之前需要将应用国际化,国际化是让应用能够适应不同的语言,地区和文化的过程。国际化有两个概念需要说明一下,一个是语言,一个是区域。区域:每个区域(例如美国,中国,西班牙)文化和习俗都不一样,如果过开发一款应用需要显示时间,那么中国人习惯看的时间是这样上午 9:40,而美国人习惯看时间是这样...

2018-06-22 18:14:17 1707

原创 浅谈iOS日志收集系统

在浅谈iOS日志收集系统中介绍了如何收集iOS崩溃日志与如何解析iOS崩溃日志,主要用到了两个工具:plcrashutil:将plcrash文件转换成苹果标准崩溃格式symbolicatecrash:符号化崩溃信息结合这两个工具写了一个脚本直接将.plcrash格式的文件符号化解析,并输出到控制台与本地文件。 主要是根据.plcrash文件中的uuid来匹配出本地默认Archive路径下对应

2017-05-08 19:52:48 16194

转载 字符串匹配的KMP算法

本文转载自阮一峰的博客字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。

2018-05-09 16:00:48 307

原创 算法相关问题以及对应解

LintCode上的算法相关的问题,以及相对应的解,所有答案用Java实现斐波那契数列查找斐波纳契数列中第 N 个数的和。 所谓的斐波纳契数列是指: 前2个数是 0 和 1 。 第 i 个数是第 i-1 个数和第i-2 个数的和。 斐波纳契数列的前10个数字是: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...答案解析 ...

2018-02-24 17:37:58 444

转载 人工智能、机器学习和深度学习之间的区别和联系

本文由曲晓峰创作,文章转自雷锋网有人说,人工智能(AI)是未来,人工智能是科幻,人工智能也是我们日常生活中的一部分。这些评价可以说都是正确的,就看你指的是哪一种人工智能。今年早些时候,Google DeepMind的AlphaGo打败了韩国的围棋大师李世乭九段。在媒体描述DeepMind胜利的时候,将人工智能(AI)、机器学习(machine learning)和深度学习(deep lea...

2017-12-06 21:36:07 671

转载 Web开发技术发展历史

本文由David创作,文章转自天码营Web的诞生提到Web,不得不提一个词就是“互联网”。Web是World Wide Web的简称,中文译为万维网。“万维网”和我们经常说的“互联网”是两个联系极其紧密但却不尽相同的概念。今天“互联网”三个字已经承载了太多的内涵,提到互联网,我们通常想到的一种战略思维,或者是一种颠覆传统的商业模式。抛开那些纷繁凌乱的商业化概念,回归技术本身,互

2017-11-02 18:24:43 4019

原创 WKWebView问题小结

内存泄漏当需要拦截Web页面的Javascript函数时会使用以下方法- (void)addScriptMessageHandler:(id <WKScriptMessageHandler>)scriptMessageHandler name:(NSString *)name;在Web页面需要调用以下方法window.webkit.messageHandlers.name.postMessage()

2017-08-31 20:10:27 2083

原创 iOS崩溃日志解析脚本

在浅谈iOS日志收集系统中介绍了如何收集iOS崩溃日志与如何解析iOS崩溃日志,主要用到了两个工具:plcrashutil:将plcrash文件转换成苹果标准崩溃格式symbolicatecrash:符号化崩溃信息结合这两个工具写了一个脚本直接将.plcrash格式的文件符号化解析,并输出到控制台与本地文件。 主要是根据.plcrash文件中的uuid来匹配出本地默认Archive路径下对应

2017-07-28 16:04:48 908

转载 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 1325

原创 iOS项目组件化解耦

最近给公司的一个iOS项目进行组件化解耦。本身项目早期开发就不是很规范,而且刚刚开始熟悉这个项目对业务方面也不是很熟悉所以并没有对所有的模块进行组件化。而且组件化解耦后还存在一些问题在文章中都会写出来。 原理和蘑菇街 App 的组件化之路类似,但是也有一些不同并没有加入「组件A」要调用「组件B」的某个方法这种业务场景。所有组件化的模块都是「组件A」要调用「组件B」的这种情况。「组件A」与「组件B」

2016-10-01 11:06:26 7260 1

转载 深入理解Objective-C:Category

本文转自美团点评技术团队摘要无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择。但是在Objective-C 2.0中,又提供了category这个语言特性,可以动态地为已有类添加新行为。如今category已经遍布于Objective-C代码的各个角落,从Apple官方的framework到各个开

2016-08-07 18:09:38 872 7

原创 Core Data系列文章(一)Core Data基础

在iOS开发数据库SQLite的使用介绍了iOS中使用SQLite对数据进行持久化存储,实际上是对数据库直接进行操作,而苹果专门有一套API来间接的对数据进行持久化存储,而且主要针对用户创建的对象 — Core Data。Core Data有很多强大的功能,使用图形化界面来创建对象。可以使用NSPredicate对数据进行筛选,使用NSSortDescriptor对数据进行排序。还可以通过获取属性与

2016-07-22 17:07:46 1135

原创 KVC与KVO的进阶使用

本篇主要介绍键-值编码KVC,键值观察KVO的进阶使用的一些技巧主要是一下两个方面:KVC的集合操作符KVO的手动实现方式KVC集合操作符关于集合操作符在苹果官方文档搜索Collection Operators的关键字就可以查看相关的文档。建议多看官方文档,本篇介绍也是以官方文档为基础的。如果一个对象包含一个数组或者是集合的属性那么使用valueForKeyPath获取相关的属性时可以在键的路

2016-07-21 11:52:09 1620

转载 iOS 保持界面流畅的技巧

这篇文章会非常详细的分析 iOS 界面构建中的各种性能问题以及对应的解决思路,同时给出一个开源的微博列表实现,通过实际的代码展示如何构建流畅的交互。Index演示项目屏幕显示图像的原理卡顿产生的原因和解决方案CPU 资源消耗原因和解决方案GPU 资源消耗原因和解决方案AsyncDisplayKitASDK 的由来ASDK 的资料ASDK

2016-07-16 09:37:01 1003

原创 iOS开发数据库SQLite的使用

iOS系统自带Core Data来进行持久化处理,而且Core Data可以使用图形化界面来创建对象,但是Core Data不是关系型数据库,对于Core Data来说比较擅长管理在设备上创建的数据持久化存储用户创建的对象,但是要处理大量的数据时就应该优先选择SQL关系型数据库来存储这些数据。 Core Data在后台也是使用SQLite来存储数据的,但是开发人员不能直接访问这些数据,只能通过Co

2016-07-14 10:34:34 3118 1

原创 NSNotification系统通知优化

最近在github上看到了LRNotificationObserver这个项目,看了一下实现方式,作者通过ARC机制实例化注册对象子类与关联对象的方法来管理注册对象的生命周期。从而省去了系统通知移除的过程,本篇介绍该项目实现过程。NSNotificationCenter 通知存在的问题注册 [[NSNotificationCenter defaultCenter] addObserver:anObs

2016-07-11 17:55:10 898

原创 基于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 2729

原创 JavaScript编写Web脚本最佳实现

最近在看JavaScript DOM 编程艺术,书里面讲到了用JavaScript编写Web脚本的规范与实现,对于实现有以下几点要求:平稳退化:确保网页在没有JavaScript下也能正常运行分离JavaScript:把网页内容与结构与JavaScript行为完全分离向后兼容:当JavaScript使用新的API时老版本的浏览器正常运行提升性能:让JavaScript执行的性能最优平稳退化

2016-05-18 12:38:56 4191

原创 利用NSProxy解决NSTimer内存泄漏问题

之前写过一篇利用RunTime解决由NSTimer导致的内存泄漏的文章,最近和同事讨论觉得这样写有点复杂,然后发现有NSProxy这么好用的根类,根类,根类,没错NSProxy与NSObject一样是根类,都遵守<NSObject>协议。 实际上本篇用了消息转发的机制来避免NSTimer内存泄漏的问题,无论是NSProxy与NSObject的派生类在Objective-C运行时找不到消息都会执行消

2016-05-11 14:13:50 3605 1

原创 关于Github Pages

迁移Github Pages我稍微有一点强迫症,实在是忍受不了整洁的界面有一些推广的广告。正所谓博客平台不重要,重要的是要有干货,CSDN首页满屏的广告也就忍受了,但是自己的文章的页面有广告看着实在是不爽。没有办法迁移到了Github Pages,花了半天的时间申请域名部署网站。又花了半天的时间把CSDN上的文章迁移到了自己的网站上。我的博客新地址看起来整洁多了。以后新文章会在CSDN和github

2016-05-10 23:00:09 824

原创 Objective-C中的同步线程的锁

概述在多线程编程中往往会遇到多个线程同时访问共享的资源,这种情况我们需要通过同步线程来避免。也就是给线程加锁。 因为Objective-C是C语言的超集。,严格的来说是真超集。所以C语言当中的pthread互斥锁在Objective-C中也可以使用,但是Objective-C中定义了本身自己的锁对象和锁协议,所以本篇介绍Objective-C中的锁。NSLockNSLocking协议@protoc

2016-05-09 16:01:27 4525

原创 iOS数字媒体开发浅析

概述自然界中的所有看到的听到的都是模拟信号,模拟信号是随时间连续变化,然而手机电脑等信息都属于数字媒体,它们所呈现的内容就是把自然界中这些模拟信号转换成数字信号然后再传递给我们。数字信号不是连续的是离散的,只有0与1两种状态,所以要把模拟信号转化成数字信号即把这些信息数字化这一过程称作A/D(模/数)转化,要进行这一过程就要必须对模拟信号进行采样,采样率越高数字信号越接近真正的模拟信号。当然还有D/

2016-04-26 11:28:35 1345 2

原创 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 3460 1

翻译 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 1845

原创 HTTPS通信机制

概述使用HTTP协议进行通信时,由于传输的是明文所以很容易遭到窃听,就算是加密过的信息也容易在传输中遭受到篡改,因此需要在HTTP协议基础上添加加密处理,认证处理等,有了这些处理机制的HTTP成为HTTPS。 HTTPS是在应用层和传输层之间加入了SSL(Secure Socket Layer)安全套接层和TLS(Transport Layer Security)安全传输层协议。 正常情况下HT

2016-02-20 22:13:12 2061

原创 Instruments-查看收集到的数据

由于Xcode调试工具Instruments指南篇幅太长,所以本篇blog继续上篇,介绍对Instruments收集到的数据去分析。关于数据分析Instruments不解决你代码中的任何问题,它帮助你更好的理解你的代码正在做什么,通过捕获你app运行的详细统计数据,并呈现它们給你去分析。由于每个app是不同的,发现和解决问题的实际步骤有所不同。因此你必须了解怎样解释那些你筛选后Instruments

2015-12-29 16:24:49 1906 1

原创 轻量级分享框架源码与扩展说明

介绍最近花了一点时间写了一个轻量级的分享框架ThinShareSDK,源码放在github上。本篇主要介绍一下整体的设计以及使用者怎么在原有的基础上简单的扩展。接口说明分享主要分两个步骤 1. 构建模型 2. 生成分享界面并分享 id model = [OKWShareSDK webContentTitle:@"分享链接" description:@"测试分享" webpageUrl:@"

2015-12-25 17:46:54 1253

原创 Xcode调试工具Instruments指南

前段时间去国内一家知名的互联网公司应聘高级iOS开发工程师,当时面试时被问到了Instruments,由于平时深入使用的不多,所以被pass掉了。因此决定找时间深入了解一下。主要途径是参考苹果官方文档,所以介绍以翻译官方文档为主。由于内容比较多,会分阶段来介绍。 以下来自苹果官方文档中对Instruments描述介绍Instruments是一个强大而灵活的性能分析和测试工具,它是Xcode开发工具

2015-12-16 11:30:02 20793 2

原创 HTTP全部报文首部字段

总结了一下HTTP各种报文首部字段。HTTP报文类型与结构HTTP报文结构 报文首部 空行(CR+LF) 报文主体HTTP报文类型http有两种类型报文,请求报文和响应报文两种报文的首部结构如下HTTP请求报文首部 请求行 请求首部字段 通用首部字段 实体首部字段HTTP响应报文首部 状态行 响应首部字段 通用首部字段 实体首部字段HTTP报首部字段从上面看H

2015-12-15 18:12:08 4500

原创 利用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 5269

原创 iOS富文本(三)深入使用Text Kit

在上一篇中介绍了Text Kit的三种基本组件的关系并且简单的实现了怎么使用这三种基本组件,本片将深入的去使用这三种基本组件。NSTextStorageNSTextStorage是NSMutableAttributedString的子类,根据苹果官方文档描述是semiconcrete子类,因为NSTextStorage没有实现NSMutableAttributedString中的方法,所以说NSTe

2015-12-02 23:23:53 3911

原创 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 2624

原创 iOS富文本(一)属性化字符串

概述iOS一些复杂的文本布局一般都是由底层的Core Text来实现的,直到iOS7苹果发布了Text Kit框架,Text Kit能够很简单实现一些复杂的文本样式以及布局,而Text Kit富文本框架用到的核心数据结构就是属性化字符串NSAttributeString,本篇文章将介绍NSAttributeString一些常用属性和使用方法。字体样式NSAttributeStr

2015-10-26 19:39:24 3984 1

原创 iOS9中UIStackView的使用

概述UIStackView是iOS 9中新增的API,类似于Android中的线性布局。UIStackView相当于一个容器,根据向UIStackView中添加视图的顺序,UIStackView会自动给这些视图添加约束,让这些视图根据内容,垂直或水平排列。由于UIStackView会自动给它里面的子视图添加约束,所以我们不必再为那些子视图添加约束,我们只要给UIStackView设置一些属

2015-10-19 16:17:07 5733

原创 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 1980

原创 Grand Central Dispatch(GCD)详解

概述GCD是苹果异步执行任务技术,将应用程序中的线程管理的代码在系统级中实现。开发者只需要定义想要执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可以统一管理,也可执行任务,这样比以前的线程更有效率。GCD的使用dispatch_sync与dispatch_asyncd

2015-09-26 22:33:45 1906 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 3210 1

MySQL必知必会 高清PDF

MySQL必知必会 高清PDF 数据库入门书籍

2018-11-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除