iOS百宝箱
小怡情ifelse
百度搬砖中
展开
-
深入探究nil和野指针
nil是一个对象指针为空。拷贝过来别人的 易于理解。并且还可作为一个反例。 1.nil >Defines the id of a null instance. 定义一个实例为空, 指向oc中对象的空指针. >示例代码: NSString *someString = nil; NSURL *someURL = nil; id someObj原创 2015-12-03 18:08:15 · 1225 阅读 · 0 评论 -
iOS/OS X内存管理(一):基本概念与原理
在Objective-C的内存管理中,其实就是引用计数(reference count)的管理。内存管理就是在程序需要时程序员分配一段内存空间,而当使用完之后将它释放。如果程序员对内存资源使用不当,有时不仅会造成内存资源浪费,甚至会导致程序crach。我们将会从引用计数和内存管理规则等基本概念开始,然后讲述有哪些内存管理方法,最后注意有哪些常见内存问题。memory man原创 2016-02-24 09:53:55 · 537 阅读 · 0 评论 -
iOS/OS X 内存管理(二):借助工具解决内存问题
上一篇博客iOS/OS X内存管理(一):基本概念与原理主要讲了iOS/OSX 内存管理中引用计数和内存管理规则,以及引入ARC新的内存管理机制之后如何选择ownership qualifiers(__strong、__weak、__unsafe_unretained和__autoreleasing)来管理内存。这篇我们主要关注在实际开发中会遇到哪些内存管理问题,以及如何使用工具来调试和解决。原创 2016-02-24 09:54:53 · 350 阅读 · 0 评论 -
Objective-C与JavaScript交互的那些事
最近公司的运营瞎搞了个活动,其活动要服务端提供数据支持,web前端在微信公众账号内作为主要的运营阵地,而iOS、Android要提供相应的入口及页面进行配合。一个活动,动用了各个端的程序猿。而在这里面技术方面主要就是涉及到web端和服务端的交互,web前端和iOS、Android的交互。本人作为一个iOS开发者,今天就聊聊web、iOS、Android三端的交互,其实在说明白一点就是方法的互相调用转载 2016-03-09 19:54:22 · 327 阅读 · 0 评论 -
Xcode重构功能怎么用我全告诉你
你会经常需要重构你的代码,让它有更好的结构,可读性或者提高可维护性。Xcode作为IDE其实提供了一些帮助dev重构的功能。你以前可能没有注意到,今天我来给大家介绍一下Xcode中提供的这些帮助重构的功能的使用。我先插一句:有些新手可能不太理解什么是重构,为什么重构,如何重构。作为一个老司机我就给你们指指路。程序员必读之:重构:改善既有代码的设计。这个是亚马逊的链接。如果没有读过可以下单了转载 2016-03-09 19:55:26 · 291 阅读 · 0 评论 -
iOS黑魔法-Method Swizzling
公司年底要在新年前发一个版本,最近一直很忙,好久没有更新博客了。正好现在新版本开发的差不多了,抽空总结一下。由于最近开发新版本,就避免不了在开发和调试过程中引起崩溃,以及诱发一些之前的bug导致的崩溃。而且项目比较大也很不好排查,正好想起之前研究过的Method Swizzling,考虑是否能用这个苹果的“黑魔法”解决问题,当然用好这个黑魔法并不局限于解决这些问题......需求转载 2016-03-09 19:57:29 · 322 阅读 · 0 评论 -
不让苹果开发者账号折磨我
在iOS开发过程中,不可避免的要和证书打交道,真机调试、App上架、打包给测试去测试等都需要搞证书。在此过程中我们会遇到很多的问题,但是如果掌握了真机调试的原理和本质;遇到问题,我们就更容易定位问题之所在,从而迅速的解决问题。这篇文章不是一步步教给你证书,描述文件的制作(其实制作步骤是非常简单的),而是尽可能的讲明白Member Center中的一些知识及原理。并且此文不涉及如何申请开发者账号,以转载 2016-03-09 20:04:32 · 477 阅读 · 0 评论 -
分享你最喜欢的技巧和提示(Xcode,Objective-C,Swift,C...等等)
Objective-C1.让Xcode的控制台支持LLDB类型的打印这有什么用?怎么说尼,笔者认为这个还是比较有用滴,为什么有用尼?因为在Xcode断点调试的时候, 在控制台输入 po self.view.frame 或者 po id 类型的时候就死翘翘了。不信? 看如下图 :进入正题打开终端输入三条命令:1. touch ~/.转载 2016-03-09 20:05:20 · 488 阅读 · 0 评论 -
UIWebView全部API学习。
最生僻的API做了下划线以及粗体的标注。百度上查了全是拷贝的同一份代码,而且只有代码没有解释,很是鄙视。//1.UIWebViewNavigationType枚举定义了页面中用户行为的分类typedefNS_ENUM(NSInteger, UIWebViewNavigationType) { UIWebViewNavigationTypeLinkClicked,//用户触原创 2015-04-14 19:50:08 · 1477 阅读 · 0 评论 -
UIScrollView全部API学习。
//1.设定滚定条的样式typedefNS_ENUM(NSInteger, UIScrollViewIndicatorStyle) { UIScrollViewIndicatorStyleDefault, // black with white border. good against any background黑白边框 UIScrollViewI原创 2015-06-10 15:32:51 · 1092 阅读 · 0 评论 -
[翻译]怎样创建一个Xcode插件(part 1)
原文:How To Create an Xcode Plugin: Part 1/3原作者:Derek Selander译者:@yohunl译者注:原文使用的是xcode6.3.2,我翻译的时候,使用的是xcode7.2.1,经过验证,文章中说说的依然是有效的。在文中你可以学习到一系列的技能,非常值得一看。苹果的"一个足以应付所有"策略使得它的产品越来越转载 2016-03-09 09:53:47 · 578 阅读 · 0 评论 -
UIButton.titleLabel.text和[UIButton setTitle:],UIButton.imageView.image和[UIButton setImage]的区别
UIButton中设置Titl方法包括以下几种:- (void)setTitle:(NSString *)title forState:(UIControlState)state; - (void)setAttributedTitle:(NSAttributedString *)title forState:(UIControlState)state原创 2016-02-19 16:48:33 · 1022 阅读 · 0 评论 -
追求Masonry
Autolayout就像一个知情达理,善解人意的好姑娘,可惜长相有点不堪入目,所以追求者寥寥无几。所幸遇到了化妆大师cloudkite,给她来了一个完美的化妆,从此丑小鸭Autolayout变成了美天鹅Masonry。前几日有幸一见,果然名不虚传,长相甜美,还善解人意。我果断放弃了Frame,开始追求Masonry初识Masonry初见我们先来看看Masonry到底有多美。我要设置转载 2016-03-16 13:49:25 · 405 阅读 · 0 评论 -
React Native
React Native React Native 使你能够运用 JavaScript 和 React 的相关知识,基于本地平台构建世界级的应用。 React Native 关注的焦点是开发者能够高效地开发所有相关平台的应用 - 学习一样东西就可以做任何事情。 Facebook 把 React Native 运用于大量的生产应用,并且将会继续向 React Native 投入人力财力。转载 2015-12-08 10:43:21 · 963 阅读 · 0 评论 -
Iphone的私有API
一.基本知识iPhone中的API除了公开的API:Published API外(或者叫文档中记录的API:Documented API),还有两类API:私有API:Private API和未公开的API:UnPublished API(或者叫文档中未记录的API:Undocumented API)。其中私有API是指放在PrivateFrameworks框架中的API,未公开的API是转载 2016-01-12 17:39:06 · 511 阅读 · 0 评论 -
判断字符串是否包含特殊字符正则
大爷的,找了半天网上没一个靠谱的办法,这里贴出来公司一个大神级别的人给的正则,给大家分享第一种:[ \\~\\!\\/\\@\\#\\$\\%\\^\\&#\\$\\%\\^\\&\\*\\(\\)\\-\\_\\=\\+\\\\\\|\\[\\{\\}\\]\\;\\:\\\'\\\"\\,\\&#\\$\\%\\^\\&\\*\\(\\)\\-\\_\\=\\+\\原创 2016-01-12 17:13:32 · 11092 阅读 · 0 评论 -
Objective-C Runtime
本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机。主要内容如下:引言简介与Runtime交互Runtime术语消息动态方法解析消息转发健壮的实例变量(Non Fragile ivars)Objective-C Associated ObjectsMethod Swizzling总结引转载 2016-01-13 20:05:43 · 386 阅读 · 0 评论 -
让你快速上手Runtime
前言本篇主要介绍Runtime在开发中的一些使用场景,顺便讲解了下MJExtension的底层实现。如果喜欢我的文章,可以关注我微博:吖了个峥,也可以来小码哥,了解下我们的iOS培训课程。后续还会更新更多内容。。。一、runtime简介RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决转载 2016-01-13 20:35:58 · 399 阅读 · 0 评论 -
Apple Pay接入详细教程
Apple Pay接入详细教程Apple Pay运行环境:iPhone6以上设备,操作系统最低iOS9.0以上,部分信息设置需要iOS9.2以上。目前还不支持企业证书添加。环境搭建好后可以在模拟器上面运行,xcode7.2.1+iPhone6SP9.2系统下,系统会绑定几种虚拟的银行卡,和几个联系人,方便调试,支付也不会发生真实的付款,真的很方便。准备工作在接入转载 2016-03-01 17:21:08 · 1288 阅读 · 0 评论 -
深入理解RunLoop (cocoChina大牛的文章 Mark一下)
先引入cocochina的一个讨论帖,我们的日常开发哪里会用到Runloophttp://www.cocoachina.com/bbs/read.php?tid=269995进入一个子线程,默认不会开启Runloop需要主动开启。深入理解RunLoop (cocoChina大牛的文章 Mark一下)RunLoop 是 iOS 和 OS X 开发中非常基础转载 2016-01-14 12:41:20 · 638 阅读 · 0 评论 -
iOS证书
iOS开发证书与配置文件的使用前提众所周知,开发iOS应用必须要有iOS证书(Certificates)和配置文件(Provisioning Profiles),那么问题来了:1.什么是iOS证书,它是如何与app应用关联的?2.iOS开发证书和生产证书有何区别,如何使用的?3.证书与配置文件(Provisioning Profiles)是什么关系,配置文件转载 2016-03-02 18:16:25 · 1047 阅读 · 0 评论 -
iOS单元测试UnitTest
什么是单元测试?一听到单元测试这个词感觉很高端,其实单元测试就是为你的方法多专门写一个测试函数。以保证你的方法在不停的修改开发中。保持正确。如果出错,第一时间让你知道,这样从最小单位开始监控来保证软件的质量。什么时候用到单元测试:1、写完代码以后:想要验证一下自己写的代码是否有问题。2、写代码之前:就是写代码之前所有的功能分模块的设计好,测试通过了再写。(我反正是没用过)。3、转载 2016-06-08 16:20:01 · 442 阅读 · 0 评论 -
iOS的UI Test
如果是已有的项目,可以通过添加target的方式添加一个UI Tests,点击xcode的菜单,找到target栏 在Test选项中选择Cocoa Touch UI Testing Bundle 这时候test组件添加成功,它在项目中的位置如下图所示 第二步:创建测试代码手动创建测试代码 打开测试文件,在testExamp转载 2016-06-08 16:29:26 · 1038 阅读 · 0 评论 -
UIWebView加载富文本处理图片宽度过大问题
这两天在做项目需求是一个webView加载一个从后台返回的富文本内容,但是会有一个问题,其中会有图片的宽度远远大于屏幕宽度,这样会导致只能看到一部分图片,左右去滑动webView查看全部内容肯定是不合适的,所以查找了一些资料在webView中注入下面一段js代码即可完美显示。当图片宽度大于一个你设定的宽度-DeviceWidth,会去做屏幕适配正常显示,如果小于这个宽度直接展示,这个宽度一般设原创 2017-01-04 15:11:48 · 2079 阅读 · 0 评论 -
帮你快速理解同步 ,异步,并发/并行,串行
同步:多个任务情况下,一个任务A执行结束,才可以执行另一个任务B。只存在一个线程。异步:多个任务情况下,一个任务A正在执行,同时可以执行另一个任务B。任务B不用等待任务A结束才执行。存在多条线程。接下来分析一下并行/并发,串行。很多人大概会混淆这些概念。并发和并行其实是异步队列实现的两种形式。并行其实是真正的异步,多核CUP可以同时开启多条线程供多个任务同时执行,互补干原创 2015-12-02 12:53:49 · 12705 阅读 · 0 评论 -
触摸事件<响应者链>
1.iOS中的事件在iOS中事件大致分为三种:触摸事件,加速计事件,远程控制事件。2.iOS中的事件,2.1概念接下来要讨论一下响应者对象的概念,什么是响应者对象。在iOS中不是任何对象都能处理事件,只有继承了UIResponder得对象才能接受并处理原创 2015-02-09 09:59:33 · 812 阅读 · 0 评论 -
NSArray全部API学习。
//1.返回数组指定下标的元素- (id)objectAtIndex:(NSUInteger)index;//2.初始化数组- (instancetype)initNS_DESIGNATED_INITIALIZER;//3. 初始化数组并且赋初值以及大小- (instancetype)initWithObjects:(constid [])objects c原创 2015-06-09 16:58:12 · 1300 阅读 · 5 评论 -
浅谈iOS单元测试
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-03-31 14:29:08 · 547 阅读 · 0 评论 -
搬好小板凳看SDWebImage源码解析(一)
看了下距离上次写简书博客的时间,已经过去了八个多月了,很惭愧。正好最近项目不忙,抽点时间研究下第三方库,朋友建议总结写成博客就这样开篇了。内容篇幅会比较长,所以希望各位看官搬好小板凳看SDWebImage源码解析,如果没有毅力真的是很难坚持下去。希望大家可以坚持跟着博主一块学完SDWebImage源码系列。 一.准备知识在正式学习源码前,先讲一些SDWebImage中用到的生僻知识点,有些用的很频原创 2017-12-17 23:57:18 · 563 阅读 · 0 评论 -
搬好小板凳看SDWebImage源码解析(二)
4>SDWebImageDownloaderSDWebImageDownloader是以单例存在,对图片下载管理,进行一些全局的配置。如下: 1).设置最大并发数,下载时间默认15秒,是否压缩图片和下载顺序等。 2).设置operation的请求头信息,负责生成单个SDWebImageDownloaderOperation以及取消operation等。 3).设置下载的策略SDWebImage原创 2017-12-19 13:27:51 · 467 阅读 · 0 评论 -
ReactiveCocoa小结
ReactiveCocoa(简称RAC)是由GitHub团队开源的一套基于Cocoa的并且具有FRP特性的框架。FRP(Functional Reactive Programming)即响应式编程。RAC就是一个第三方库,使用它可以大大简化代码,提高开发效率,目前公司也在范围使用。但疏于总结只是停留在会用的阶段,这次针对RAC做个全面认识和总结。第一部分基础理论。第二部分介绍一些常用类。第三部分介...原创 2018-04-10 08:55:11 · 251 阅读 · 0 评论 -
剑指offer 3.在二维数组中查找某个数
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。BOOL isCheck(int a[][3],int rows,int columns,int value) { BOOL isHave = NO; if (rows > 0 && col...原创 2018-05-15 13:44:43 · 213 阅读 · 0 评论 -
Instruments性能优化-Core Animation
当App发展到一定的规模,性能优化就成为必不可少的一点。但是很多人,又对性能优化很陌生,毕竟平常大多时间都在写业务逻辑,很少关注这个。最近在优化自己的项目,也收集了很多资料,这里先浅谈一下使用Instruments中CoreAnimation优化收获的经验以及总结,这是第一篇,后续会更新Timer Profiler,Leaks等其他优化工具的具体用法。准备工作在性能优化中一个最具参考价值的属性是FP原创 2016-12-12 09:59:20 · 1941 阅读 · 6 评论 -
iOS控制器瘦身-面向超类编程
今天写这篇文章的目的,是提供一种思路,来帮助大家解决控制器非常臃肿的问题,对控制器瘦身。 如果手边有项目,不妨打开工程看一下你的控制器代码有多少行,是不是非常多?再看一下tableView的代理方法cellForRow和heightForRow的代码是不是也是非常多?里面夹杂着switch和大量if esle的判断逻辑的代码。后期维护看着这些if else是不是特别烦躁?特别是自己在维护前人写的代原创 2016-11-14 10:59:22 · 2330 阅读 · 4 评论 -
整理常用的iOS第三方资源
http://www.cocoachina.com/ios/20160121/14988.html原创 2016-01-21 17:18:05 · 572 阅读 · 0 评论 -
您所不知道的nil/Nil/NULL/NSNull的空与空
一、NULL声明位置在stddef.h文件对于普通的iOS开发者来说,通常NULL的定义就是:# define NULL ((void*)0)因此,NULL本质上是:(void*)0NULL表示C指针为空charchar *string = NULL;二、nil声明在objc.h文件对于普通iOS开发者来说,nil的定义形式为:# define nil转载 2016-06-06 09:47:33 · 430 阅读 · 0 评论 -
Git Flow工作流
这节介绍的Gitflow工作流借鉴自在nvie的Vincent Driessen。Gitflow工作流定义了一个围绕项目发布的严格分支模型。虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架。Gitflow工作流没有用超出功能分支工作流的概念和命令,而是为不同的分支分配一个很明确的角色,并定义分支之间如何和什么时候进行交互。除了使用功能分支,在做准备、维转载 2016-06-29 17:26:17 · 449 阅读 · 0 评论 -
iOS开发经验积累 二
1.在navigationController栈中查找传入的特定的控制器名称_name。使用场景在进入C控制器,可能有两个入口A和B控制器,从哪个入口进来,点击返回就返回哪个控制器。这样我们可以在C控制器中写上这个导航控制器的方法来判断,控制器栈中存在的是是否存在A或者B控制器,如果有A代表从A入口进来,那么就返回A,B则同义。UIViewController *VC = [self.na原创 2015-12-10 11:15:06 · 463 阅读 · 0 评论 -
IDE的一键Build背后隐藏了什么
大家所熟悉的IDE(集成开发环境)有很多,比如Visual Studio ,Xcode等等。那么我们在Coding完代码后,一般都是点击build直接运行程序,直到输出结果。但是往往我们忽略了其中的过程,build之后IDE都执行了哪些操作呢?一个build其实是编译和连接两个合并在了一起,日常的这些IDE非常强大,都已经帮我们提供了默认的配置,我们只需要点击build即可。但是这样很多系统软件的原创 2016-07-25 12:34:11 · 1365 阅读 · 0 评论 -
拓扑排序 --->图
一个无环的有向图成为无环图(Directed Acyclic Graph),简称DAG图。所有的工程或者某种流程都可以分为若干个小的工程或者阶段,我们称这些小的工程或阶段为“活动”;在一个表示工程的有向图种,用定点表示活动,用弧表示活动之间的优先关系,这样的有向图为定点表示活动的网,我们称之为AOV网(Active On Vertex Network)。拓扑序列:设G=(V,E)是一个原创 2016-07-05 23:54:52 · 816 阅读 · 0 评论