自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 iOS数据持久化设计探讨(NSCache,PINCache,YYCache,CoreData,FMDB,WCDB,Realm)

一、目标了解移动端的数据持久化方式和对应的使用场景,提供相关技术选型做技术储备。二、数据持久化的目的快速展示,提升体验已经加载过的数据,用户下次查看时,不需要再次从网络(磁盘)加载,直接展示给用户节省用户流量(节省服务器资源)对于较大的资源数据进行缓存,下次展示无需下载消耗流量同时降低了服务器的访问次数,节约服务器资源。(图片)离线使用。用户浏览过的数据无需联网,...

2019-01-16 21:02:43 1745

原创 CocoaPods使用

CocoaPods使用一、CocoaPods简介二、基本使用1、安装CocoaPods2、更新CocoaPods3、使用`CocoaPods`在`XCode`工程管理三方库4、pod install vs. pod update三、创建`Pod`库1、使用`Pod Lib Create`创建`Pod`库2、开放为公开库3、 生成私有库四、CocoaPods私有库创建遇到的问题1.私有库的depe...

2018-10-30 20:54:55 476

原创 iOS 11 & iPhoneX 适配

一、safeAreaautomaticallyAdjustsScrollViewInsets to contentInsetAdjustmentBehavior 在iOS 11中,苹果废弃了 UIViewController 的automaticallyAdjustsScrollViewInsets属性,改用UIScrollView 的 contentInsetAdjustmentBehavio

2017-12-01 16:30:17 1183

原创 swift4.0 适配

一、前言在我们的工程中处于swift和OC混编的状态,使用swift已经有一年半的时间了,随着Xcode9的更新,swift3.2和swift4.0也随之到来,swift3.2相较于Xcode8的swift3.1变动极小,适配没遇到问题,主要关注swift4.0的适配。二、查看当前工程的 swift 版本三、使用 Xcode 将工程转换到 swift4.01、环境Xcode9.1当前 swift

2017-11-09 16:58:30 7053

原创 fastlane Xcode9 The call to the iTMSTransporter completed with a non-zero exit status: 1. This indic

问题升级 Xcode9 以后,原有的 fastlane 打包和分发脚本不能正常使用。1、gym export_options 变化Xcode9 中的 Export 操作需要指定更多的信息,对应的 fastlane 中的 gym action 也同样需要把更多的信息指明,原有最简单的脚本,可能已不能正常工作:// 在 Xcode9 中可能不能正常工作gym(scheme: "MyApp", work

2017-10-11 19:10:09 1412

原创 sudo 命令直接添加密码到脚本

问题有些情况下,部分脚本命令需要获取管理员权限了执行:sudo gem install fastlane在一般情况下,需要等待你输入管理员密码以继续执行。如果你需要在 Jenkins 等需要自动化执行的脚本中时不可行的,此时就需要不输入密码来执行脚本。解决方案1、全局配置参见免密码使用sudo和su。2、将密码以参数形式追加到脚本使用管道echo [password] | sudo -S gem

2017-10-11 19:08:45 18284

原创 iOS UICollectionView 卡片效果 传送带效果 Carousel FlowLayout

场景在我们的app中需要一个类似影院传送带式选择电影场次的控件,效果如下: 实现思路控件选择 看控件特征,是一个可滚动的长列表,在iOS中一般都使用UICollectionView来展现,这里我们也选择它。布局选择 UICollectionView中每个item的显示样式都通过UICollectionViewLayout来控制,这里明显是一个“流式布局”,我们可以选择UICollectio

2017-09-27 15:42:02 4250

原创 UIApplication openUrl too slow (十分慢 10秒)

在iOS 10系统下,应用后台点击推送通知进入App调用[[UIApplication sharedApplication] openURL:url];时需要等待10秒左右,才可以正常跳转到浏览器。遇到类似问题的你可以这么解决: dispatch_async(dispatch_get_main_queue(), ^{ if ([[UIApplication sharedAppl

2017-09-27 15:40:09 812

原创 React-Native Demo 工程 TransformError babel-preset-react-native

一、问题 1. 现象 如果你依照RN官方文档或者RN中文网创建工程,你会遇到以下报错:![bundling failed: "TransformError: /Users/eduardo/Desktop/rn_reproduce_transform_error/index.ios.js: Unexpected token ) (While processing preset: "/Users/e

2017-09-27 15:38:50 1045

原创 iOS PassKit Wallet 开发(Passbook 开发)

简介Wallet 的前身叫 Passbook,对用户来说,,它是一个票据凭证的综合管理中心,你可以把你的登机牌、电影票、优惠券等所有凭证添加到 Wallet,在里面可以查看凭证的余额、使用期限、使用地点等信息,使用时直接通过 Wallet 就能看到你所有的票据和凭证。对于开发者而言,支持 Wallet ,可以给用户提供更统一便利的管理凭证的方式,便于用户使用。Wallet 可以通过 “Passes”

2017-09-27 15:35:29 4325

原创 Carthage 使用 / 如何给自己的项目添加 Carthage 支持

Carthage简介Carthage 是一款iOS项目依赖管理工具,与Cocoapods有着相似的功能,可以帮助你方便的管理三方依赖。它会把三方依赖编译成 framework,以 framework 的形式将三方依赖加入到项目中进行使用和管理。与 Cocoapods 的异同Cocoapods  是一个已经长期存在的对 iOS 三方依赖进行管理的工具,它已经相当的成熟,为什么要使用 Carthag

2017-09-27 15:33:59 2006

原创 Swift中的map flatMap filter reduce

map1.map方法的定义public func map<T>(_ transform: (Element) throws -> T) rethrows -> [T]map函数接收一个闭包做参数,闭包本身参数是原数组的元素,闭包返回值是一个泛型,由泛型对象组成的数组作为map函数的返回值。2.示例返回与原数组相同的类型“` let numbers = [0, 1, 2, 3, 4, 5] le

2017-09-27 15:32:05 444

原创 Xcode9 xcodebuild export plist 配置

前言在你的iOS团队中,如果在使用持续集成来完成自动化打包分发的工作,你可能会了解如何使用一些命令行工具来构建ipa文件,其中一款使用较为广泛的是xcodebuild。在我们的团队中有部分打包工作就是使用的xcodebuild,脚本代码大概如下:ipaName = "${scheme}${buildConfiguration}"// archivexcodebuild -workspace Pr

2017-09-27 15:26:04 11266 2

原创 iOS/Android SQLite 全文检索——FTS (Full Text Search)

前言我们的APP部分功能为了满足用户离线使用搜索的场景,使用了内置SQLite数据库的方式,随着内容的日益丰富,数据库记录快速增多,导致搜索速度明显变慢,为了提升搜索速度,给我们的数据做了全文检索的支持,在3W+的数据下,搜索速度由原来的数秒提升至几十到几百毫秒(设备不同,搜索效率存在差别)。一、基本概念概述 全文检索是从文本或数据库中,不限定数据字段,自由地搜索出消息的技术。 运行全文检索任

2017-01-08 22:28:41 9861 7

原创 iOS应用外搜索之 Core Spotlight 适配

前言前段时间为APP做了应用外搜索的适配,也就是iOS Core spotlight服务的支持,可以让用户在iPhone系统中的下拉或者左滑搜索中搜索到APP中的内容,点击搜索结果可以直接跳转到APP中的相应结果页。现在iPhone的存储配置从7开始已经以32G作为基础配置了,也就意味着iPhone用户能安装的APP数量肯定会上升,安装APP的数量多了,难以一下子找到想要使用的APP时,那么使用搜索

2016-12-11 23:53:06 831

原创 iOS中URL编码那些事

前言在iOS程序中,访问一些HTTP/HTTPS的资源服务时,如果url中存在中文或者特殊字符时,会导致无法正常的访问到资源或服务,想要解决这个问题,需要对url进行编码。一、转码的原因和范围1. 为什么要转码网络标准RFC 1738规定url中只能包含英文字母和阿拉伯数字,以及一些特殊字符:"...Only alphanumerics [0-9a-zA-Z], the special charac

2016-11-27 22:47:41 15951

原创 OC与Swift中的字符串

一、OC中的字符串引用类型在Object-C中,使用NSString和NSMutableString这两个类对字符串进行操作,一个字符串对象会被指针所引用。一般情况下,使用一个旧的字符串对象对一个新声明的字符串对象进行赋值,其实就是新的指针指向同一个字符串对象,也就是指针的拷贝,并没有生成新的字符串。只有对一个可变字符串对象进行拷贝,或者对任意字符串对象进行可变拷贝时才会生成一个新对象。同样的在函

2016-10-30 21:51:07 1082

原创 OC与swift混编

前言苹果推出swift已经两年多了,到今年的九月份正式发布了swift的3.0版本,相信很多iOS开发或多或少已经使用过swift,由于维护的项目时间比较久了,以往都是使用OC开发,现在正在对已有一些功能进行改版重写,索性使用swift来做,以下是在使用OC与swift进行混编过程的一些介绍。一、工程配置1.Object-C bridging-headerObject-C bridging-hea

2016-09-25 23:49:18 1996

原创 iOS10适配

一.工程改动1. 工程配置直接使用Xcode8Beta打开工程后,你会发现你的provisonfile配置出了问题,这是由于在Xcode8中对工程配置有了一些小的改动。 在Xcode8工程配置的general选项卡中,使用更详细signing选项替换了原有的team选项。选中:project -> target -> generalXcode8之前team选项 Xcode8之前pro

2016-09-11 21:56:10 6124

原创 iOS10集成siri

前言伴随着iOS10的出现,苹果进一步丰富了自己的软件产品生态,对许多用户体验的细节进行了优化和改进。本文主要对其中的在iOS10中如何给应用集成siri做简单介绍。集成准备xcode8的beta版本。点这里下载。iOS10 beta。点这里下载。集成步骤给应用程序添加拓展,必须遵守以下几个步骤:在Xcode项目配置中,将Siri置为可用状态。在Xcode工程中添加拓展target,同时配置In

2016-08-28 20:32:27 4400

原创 iOS相册、相机、通讯录权限获取

为什么要获取权限在越来越注重个人隐私的今天,用户很多情况下希望自己能完全掌握自己手机应用对媒体信息的一些访问权限,比如相册、相机、通讯录等。苹果在iOS7、iOS8等几个系统版本对一些权限的控制都做了加强,需要用户授权后应用才有相关的访问权限。场景:在你获取相册数据的时候,如果用户拒绝授权,那么可能会获取不到数据,此时需要给用户相应的提示,告知用户是权限的问题,此时,就需要得知相应的权限状态给用户

2016-07-31 17:59:41 7205 1

原创 七牛文件批量上传之自定义NSOperation

前言:前阵子遇到七牛文件批量上传的问题,尝试了几种方案,现分享一种目前采用的方案——自定义operation。为什么要自己实现七牛文件的批量上传在使用七牛云存储服务的过程中,想要在手机客户端进行图片、视频等文件的上传,只需要直接引入SDK,然后使用QiniuSDK即可。对于iOS端的上传特别简单,只需要使用pod引入SDK:pod "Qiniu", "~> 7.0"然后#import <Qiniu

2016-07-17 17:40:52 3899

原创 iOS7、8、9相册适配

前言由于在iOS8及以后苹果将原有的操作相册的ALAssetsLibrary framework替换为Photos framework,所以,如果在应用中使用到的相册需要支持iOS8以下的系统版本的话,就需要了解Photos framework以做不同的版本适配。iOS8以下几个重要的实体概念ALAsset(iOS8及以后使用PHAsset) 一个ALAsset实例对象代表一个资源实体,比如一张

2016-07-03 17:30:41 5271 1

原创 iOS文件上传遇到的坑

背景在我们的app中有一些需要做文件上传的功能,最近在我们对文件上传结果的日志监控中收到了很多的超时信息,后来在实际文件上传的测试中发现一些问题,主要集中在大批文件上传上面,简单分享一下。问题在批量文件上传中,通过测试发现,使用NSURLSessionUploadTask的形式进行文件上传,如果同时启动过多的上传任务,会导致上传任务的失败率极高,失败的原因基本都是请求超时。按照以下方式对文件上传进行

2016-06-19 23:25:13 9651 1

翻译 创建私有cocoapods repo库 —— Private Pods

官方引导原文CocoaPods不仅是一个将开源代码添加到项目的很棒的工具,同时也可以做到跨项目分享组件。你使用一个私有的Spec Repo就能做到这些。只需要几个简单步骤就能给你的项目做好一个私有的pods设置:首先为这些pods创建一个代码仓库,然后让Cocoapods知道在哪里能找到它,然后添加这些podspecs文件到这个代码仓库。使用步骤Create a Private Spec Repo

2016-06-19 19:33:34 7051

原创 ReactNative环境配置问题

问题1 - Cannot read property ‘root’ of null详细报错信息:<START> fs crawlTypeError: Cannot read property 'root' of null at /Users/wusuowei/Documents/WorkSpace/20160525/Demo/node_modules/react-native/pack

2016-06-05 17:00:55 1871

原创 React Native环境配置

环境要求Homebrew 一个Mac OS下的一个包管理工具(Homebrew简介和基本使用)/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"Node环境 使用Homebrew安装Node.js$ brew install nodeReact Na

2016-06-05 16:25:40 690

原创 Homebrew简介和基本使用

一、Homebrew是什么Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。援引官方的一句话:又提示缺少套件啦?别担心,Homebrew 随时守候。Homebrew – OS X 不可或缺的套件管理器。二、Homebrew安装1. 要求Intel CPU

2016-06-05 15:49:00 63159

原创 友盟统计平台crash信息UUID与打包时生成.dSYM的UUID不一致

前言在iOS应用的开发工作中,我们经常会用到一些开源的三方库或者一些三方服务,为了保证项目的稳定性,我们通常不会频繁的对项目中一些三方引用进行更新。一般情况下,只有在我们的项目中遇到一些由于三方依赖引起的问题时,我们才会尝试更新一下三方依赖去解决问题,但这也仅限于你能定位到这些问题是由三方依赖引发的。其实,为了保证这些三方依赖可能隐含的一些问题可以被及时被解决,你最好关注一下这些三方依赖每次更

2016-05-22 17:48:06 4373 2

原创 如何校验.ipa包、.dSYM、.crash文件的一致性

前言https://developer.apple.com/library/ios/qa/qa1765/_index.html

2016-05-08 18:01:09 6939

原创 iTunesconnect 缺失Beta版权利

现象:使用shenzhen打的包上传appstore后缺失beta版权利如何确认:可以打包后执行 unzip xxx.ipa codesign -d –entitlements :- Payload/xxx.app查看是否有”beta-reports-active: true”原因:.mobileprovision文件使用错误:使用了AD Hoc的provisonfile,应该使用XC(apps

2016-04-11 09:49:52 3909

原创 git .gitignore失效的解决办法

前言在使用git这个多人协作的代码版本控制工具时,为了避免每次提交修改代码时,一些预期外的无用文件的改动同时被提交并加入版本控制,需要将一些和代码无关的无用文件排除在版本控制外,此时也就需要使用.gitignore文件来指定这些需要忽略的文件信息。不同类型的工程都有一些通用的.gitignore范本,一般在项目初始化以后,直接按照范本加入.gitignore文件即可,这些使用.gitignore文件

2016-04-10 18:48:40 19091 4

原创 iOS动态更新方式选择

前言对于苹果商店的iOS的应用更新,一直以来都是由开发者提交App应用包给苹果,苹果审核通过后,方可在iTunesConnect进行发布,这中间往往要经过一到两周的时间。对于一些严重问题的修复,虽然你可以提交加急审核,但这也最少需要一到两天的时间,往往做不到十分的及时。基于这个痛点,一些提供动态更新来进行紧急问题修复的三方库或者三方服务也就应运而生了。开源库还是三方服务,这是个问题方案对比如果你想要

2016-03-27 20:43:26 828

原创 jenkins实现cocoapods官方sepc库映射自动更新

创建项目参数化构建源码库和超时时间配置Poll SCM和shell脚本

2016-02-29 10:20:57 1263

原创 持续集成之Jenkins

注:部分内容来自互联网,仅供学习参考。持续集成持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。JenkinsJenkins 是一个可扩展的持续集成引擎。主要用于:• 持续、自动地构建/测试软件项目。• 监控一些定时执行的任务。

2016-02-28 20:12:37 535

原创 如何建立cocoapods官方sepc库映射

使用场景场景1假如你是一名程序猿,想必肯定对经常访问类似github、stackoverflow等一些国外的开源源码库或社区,假如你是一名iOS 程序猿,那想必很有可能会使用过cocoapods去管理一些三方的依赖库。cocoapods目前支持很多主流的iOS三方开源库,使用它去管理三方库依赖很简单、方便,是一件让人愉悦的事情。不过由于cocoapods官方库的sepc文件代码仓库是托管在githu

2016-02-28 19:59:22 1121

原创 苹果个人开发者账号申请

前言最近为自己申请了一个苹果个人开发者账号,遇到了两个问题,分享一下。问题Sorry, You can’t enroll at this time. 当你注册完自己的Apple ID之后,进入开发者中心,进入注册流程点击开始注册时,可能你会遇到这个提示,这是因为你Apple ID注册时个人信息中自己的年龄不足18岁所致。只需要修改个人信息即可。Apple联系你,要求你提供护照/身份证等信息

2016-01-31 13:47:32 1014

原创 CocoaPods私有库创建遇到的问题

一、前言在iOS开发中,为了满足企业内部的一些组件化需求,往往需要创建一些公用的代码,这些公用代码往往是不希望被公开的,此时一般可以选择submodule或者CocoaPods库的形式。如果选用submodule,直接上传到自己的私有远程代码仓库就能达到目的。对于CocoaPods库的使用,则需要创建自己的私有库。二、创建私有库遇到的问题私有库的创建这里不再赘述,在互联网上已经有许多博客你可以进行参

2016-01-14 10:23:45 19505 1

原创 iOS性能优化——重用的艺术

前言本文主要是讲对UITableView以及UICollectionView的一些使用场景和注意事项,如何利用UITableViewCell和UICollectionViewCell的重用去提升APP的交互体验。一、问题来源最近在对我们的应用进行一些性能上的优化,发现其中一个图片预览界面在添加的图片数量较多时十分卡顿,于是开始查找原因,发现实现方案存在问题——没有展示在界面的图片视图也会创建,没有想

2016-01-06 16:53:13 706

原创 iOS内存优化——OperationQueue悄悄给你挖的坑

这篇文章是对以前我们的APP做过的一次内存优化的介绍,场景是在大批量(数千至上万)的小文件(JSON、图片)数据下载的情况,使用NSOperationQueue和dispatch_global_queue的一些注意点,有类似大批量数据的上传或下载需求的童鞋可以参考一下。一、基本概念1.队列。使用场景 在iOS的开发中,我们经常会需要处理一些耗时操作,比如网络请求、文件读写、数据库增

2015-12-31 11:03:38 2435

空空如也

空空如也

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

TA关注的人

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