iPhone开发
王崇
这个作者很懒,什么都没留下…
展开
-
Mac 解析xlog文件
1,安装Python 2.7x2,下载安装pyelliptic1.5.7 https://github.com/yann2192/pyelliptic/releases/tag/1.5.7 解压缩终端,cd到pyelliptic-1.5.7,执行:sudo python setup.py install3,下原创 2018-01-08 10:10:01 · 5181 阅读 · 1 评论 -
iOS所有键盘类型
typedefNS_ENUM(NSInteger, UIKeyboardType) { UIKeyboardTypeDefault, // Default type for the current input method. UIKeyboardTypeASCIICapable, // Displays a keyboard原创 2015-02-09 11:01:47 · 495 阅读 · 0 评论 -
iOS开发的一些技巧
TableView不显示没内容的Cell怎么办?类似这种,我不想让下面那些空的显示.很简单.1self.tableView.tableFooterView = [[UIView alloc] init];试过的都说好.加完这句之后就变成了这样.自定义了left转载 2014-12-31 19:37:19 · 306 阅读 · 0 评论 -
iOS图片缓存库基准对比
原文:iOS image caching. Libraries benchmark (SDWebImage vs FastImageCache),译者夜微眠(github地址),校对蓝魂(博客)、Cocoa(博客)。1.引言过去的几年里,iOS应用在视觉方面越来越吸引人。图像展示是其中很关键的部分,因为大部分图像展示都需要下载并且渲染。大部分开发者都要使用图像填充表格视图(ta转载 2015-02-03 15:50:23 · 430 阅读 · 0 评论 -
iOS Crash文件的解析
有一个WWDC 2010的视频推荐大家抽空看看,视频名称“Understanding Crash Reports on iPhone OS”,该视频详细讲解了Crash文件的结构。当然如果你没时间看的话,不妨阅读以下这篇文章。一、Crash文件结构当程序运行Crash的时候,系统会把运行的最后时刻的运行信息记录下来,存储到一个文件中,也就是我们所说的Crash文件。iOS的Cras转载 2015-02-03 12:04:07 · 451 阅读 · 0 评论 -
iOS 学习资料整理
这份学习资料是为 iOS 初学者所准备的, 旨在帮助 iOS 初学者们快速找到适合自己的学习资料, 节省他们搜索资料的时间, 使他们更好的规划好自己的 iOS 学习路线, 更快的入门, 更准确的定位的目前所处的位置.该文档会持续更新, 同时也欢迎更多具有丰富经验的 iOS 开发者将自己的常用的一些工具, 学习资料, 学习心得等分享上来, 我将定期筛选合并, 文档尚有一些不完善之处, 也转载 2015-02-02 18:36:00 · 1120 阅读 · 0 评论 -
黑幕背后的__block修饰符
我们知道在Block使用中,Block内部能够读取外部局部变量的值。但我们需要改变这个变量的值时,我们需要给它附加上__block修饰符。__block另外一个比较多的使用场景是,为了避免某些情况下Block循环引用的问题,我们也可以给相应对象加上__block 修饰符。为什么不使用__block就不能在Block内部修改外部的局部变量?我们把以下代码通过 clang转载 2015-02-02 10:54:54 · 740 阅读 · 0 评论 -
iOS的横屏(Landscape)与竖屏(Portrait)
苹果开发中对iOS应用的横屏(Landscape)和竖屏(Portrait)的支持情况。0. 应用级别的配置大家(特指有iOS开发经验的人)应该都知道Xcode Project的工程配置General页签中有那么四个图(或者4个checkbox),标识对四种interfaceOrientation的支持。分别为Portrait、PortraitUpsideDown、Landsc转载 2014-12-19 14:41:54 · 2471 阅读 · 0 评论 -
iOS动画进阶(十)缓冲
缓冲生活和艺术一样,最美的永远是曲线。 -- 爱德华布尔沃 - 利顿在第九章“图层时间”中,我们讨论了动画时间和CAMediaTiming协议。现在我们来看一下另一个和时间相关的机制--所谓的缓冲。Core Animation使用缓冲来使动画移动更平滑更自然,而不是看起来的那种机械和人工,在这一章我们将要研究如何对你的动画控制和自定义缓冲曲线。动画速度动画实际上转载 2015-01-27 18:18:53 · 746 阅读 · 0 评论 -
iOS动画进阶(一)图层树
图层的树状结构巨妖有图层,洋葱也有图层,你有吗?我们都有图层 -- 史莱克Core Animation其实是一个令人误解的命名。你可能认为它只是用来做动画的,但实际上它是从一个叫做Layer Kit这么一个不怎么和动画有关的名字演变而来,所以做动画这只是Core Animation特性的冰山一角。Core Animation是一个复合引擎,它的职责就是尽可能快地组合屏幕转载 2015-01-27 16:50:11 · 649 阅读 · 1 评论 -
iOS动画进阶(十一)基于定时器的动画
基于定时器的动画我可以指导你,但是你必须按照我说的做。 -- 骇客帝国在第10章“缓冲”中,我们研究了CAMediaTimingFunction,它是一个通过控制动画缓冲来模拟物理效果例如加速或者减速来增强现实感的东西,那么如果想更加真实地模拟物理交互或者实时根据用户输入修改动画改怎么办呢?在这一章中,我们将继续探索一种能够允许我们精确地控制一帧一帧展示的基于定时器的动画。转载 2015-01-27 18:20:47 · 710 阅读 · 0 评论 -
iOS动画进阶(七)隐式动画
隐式动画按照我的意思去做,而不是我说的。 -- 埃德娜,辛普森我们在第一部分讨论了Core Animation除了动画之外可以做到的任何事情。但是动画师Core Animation库一个非常显著的特性。这一章我们来看看它是怎么做到的。具体来说,我们先来讨论框架自动完成的隐式动画(除非你明确禁用了这个功能)。事务Core Animation基于一个假设,说屏幕上的转载 2015-01-27 17:31:50 · 678 阅读 · 0 评论 -
iOS动画进阶(十三)高效绘图
高效绘图不必要的效率考虑往往是性能问题的万恶之源。 ——William Allan Wulf在第12章『速度的曲率』我们学习如何用Instruments来诊断Core Animation性能问题。在构建一个iOS app的时候会遇到很多潜在的性能陷阱,但是在本章我们将着眼于有关绘制的性能问题。软件绘图术语绘图通常在Core Animation的上下文中指代软件绘转载 2015-01-27 18:27:03 · 1140 阅读 · 0 评论 -
Objective-C中的Block
1.相关概念在这篇笔记开始之前,我们需要对以下概念有所了解。1.1 操作系统中的栈和堆注:这里所说的堆和栈与数据结构中的堆和栈不是一回事。我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构: 栈区(stack):由系统自动分配,一般存放函数参数值、局部变量的值等。由编译器自动创建与释放。其操作方式类似于数据结构中的栈,即后进先出、转载 2015-01-21 22:44:45 · 341 阅读 · 0 评论 -
自学 iOS 开发的一些经验
基础一定的编程经验这里说的编程经验是至少熟练一门编程语言,对 OOP 有一定的了解,最好熟悉一些基本的设计模式。遇到过的好多 iOS 开发,大多是从别的语言转过来的,所以有一定的编程基础,学起来会更容易 get the point.如果是第一次接触编程,当然也是没问题的,只是要做好心理准备,可能会比想象的难。英语发现不少开发对于英语似乎有点接受不能,通常都是转载 2015-01-04 22:09:21 · 370 阅读 · 0 评论 -
使用iOS 原生AES加密
使用iOS 原生AES加密原创 2017-11-09 11:33:52 · 602 阅读 · 0 评论 -
iOS 7+,使用原生API生成QRCode。
iOS 7之后,可以通过原生API生成QRCode。原创 2017-11-08 10:27:32 · 224 阅读 · 0 评论 -
深究block
想了半天不知道怎么开头,那就直接开始吧。其实block在工作中用到的地方很多,功能很强大,只是以前老是听人说:“block会有很多坑,不熟悉的话还是用delegate代替吧”,自己也就知难而退。最近决定深究一下block,以后要广泛使用。一:block的使用场景 “一门技术,如果不为所用,那么学了跟没学一样“。(引自某IT网红)。所以,首要问题就是使用场景。 1:系统API层面,各种U原创 2016-06-03 18:29:59 · 369 阅读 · 0 评论 -
@synthesize name = _name;
下午突然碰到一个问题: Class.h@interface Class : NSObject@property (nonatomic, copy) NSString *name;@endClass.m@implementation Class- (NSString *)name { return _name;}- (void)setName:(NSString *)name {原创 2016-04-20 17:51:58 · 449 阅读 · 0 评论 -
object-c 利器之KVO深究(一)-- KVO实现原理
iOS开发中,监听对象某一属性变化而做出响应的模式十分常用,俗称,观察者模式。具体用法十分简单,我们只需给想要监听的对象添加一个观察者就可以实现灵动的操控。如: @interface NSObject(NSKeyValueObserverRegistration)/* Register or deregister as an observer of the value at a key path原创 2016-02-23 17:05:20 · 567 阅读 · 0 评论 -
Objective-C Runtime
Objective-C Objective-C 扩展了 C 语言,并加入了面向对象特性和 Smalltalk 式的消息传递机制。而这个扩展的核心是一个用 C 和 编译语言 写的 Runtime 库。它是 Objective-C 面向对象和动态机制的基石。Objective-C 是一个动态语言,这意味着它不仅需要一个编译器,也需要一个运行时系统来动态得创建类和对象、进行消息传递和转发。理解 Obje转载 2016-02-19 17:58:14 · 303 阅读 · 0 评论 -
iOS开发中,__attribute__ 使用场景
在AvailabilityMacros.h 里,定义了很多有用的宏:1,__attribute__(( deprecated()))在外边使用Model的属性或方法时,编译器就会提出警告,形如下图:这样在废弃有些属性时,可以给人提醒。当然系统的DEPRECATED_MSG_ATTRIBUTE(s)也是可以使用。2, __attribute__((un原创 2016-01-12 11:41:56 · 418 阅读 · 0 评论 -
iOS开发—手动解析CrashLog(一)
解决崩溃问题是移动应用开发者最日常的工作之一。如果是开发过程中遇到的崩溃,可以根据重现步骤调试,但线上版本就无能为力了。好在目前已经有很多不错的第三方CrashLog搜集平台(如友盟、Crashlytics等)为我们做好了解析工作,甚至在Xcode7里苹果也跟进了解析线上版本崩溃日志的功能,为开发者减轻了不少负担。尽管通常已经不需要我们手工处理CrashLog,了解CrashLog的还原原理和方法转载 2015-08-26 14:25:16 · 536 阅读 · 0 评论 -
iOS开发—手动解析CrashLog(二)
在上篇文章《手动解析CrashLog之——方法篇》里介绍了手动解析CrashLog的方法,接下来再说说dwarfdump、atos等解析工具是如何从符号表文件中获取到崩溃位置信息的。一切还得从.dSYM符号表文件开始说起。一、.dSYM文件的生成符号表文件.dSYM实际上是从Mach-O文件中抽取调试信息而得到的文件目录,实际用于保存调试信息的问价是DWARF,其出身可以从苹果转载 2015-08-26 14:26:20 · 485 阅读 · 0 评论 -
tableview 使用visual format language自适应cell宽高,和横竖屏
再也不用担心,如何做适配了。使用苹果官方提供的适配方案当然是最正宗的,比第三房框架可控。可以适配各种屏幕尺寸,以及横竖屏,欢迎有独特简介的极客们,提出宝贵意见开发过程中,时常会遇到cell自适应高度与横屏下的宽度,传统的做法要么是手动计算frame,要么就是使用xib。第一种方式,工作量是巨大的(相信很多人深有体会)。第二种方式,对于协同开发和有些不用xib公司来说,有原创 2015-05-15 16:11:48 · 1301 阅读 · 0 评论 -
iOS动画进阶(五)变换
变换很不幸,没人能告诉你母体是什么,你只能自己体会 -- 骇客帝国在第四章“可视效果”中,我们研究了一些增强图层和它的内容显示效果的一些技术,在这一章中,我们将要研究可以用来对图层旋转,摆放或者扭曲的CGAffineTransform,以及可以将扁平物体转换成三维空间对象的CATransform3D(而不是仅仅对圆角矩形添加下沉阴影)。仿射变换在第三章“图层几何转载 2015-01-27 17:25:37 · 511 阅读 · 0 评论 -
iOS动画进阶(四)视觉效果
视觉效果嗯,圆和椭圆还不错,但如果是带圆角的矩形呢?我们现在能做到那样了么?史蒂芬·乔布斯我们在第三章『图层几何学』中讨论了图层的frame,第二章『寄宿图』则讨论了图层的寄宿图。但是图层不仅仅可以是图片或是颜色的容器;还有一系列内建的特性使得创造美丽优雅的令人深刻的界面元素成为可能。在这一章,我们将会探索一些能够通过使用CALayer属性实现的视觉效果。圆角转载 2015-01-27 17:24:21 · 725 阅读 · 0 评论 -
自定义导航控制器的动画
CATransition *transition = [CATransition animation]; transition.duration = 1.0f; /* 间隔时间*/ transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionE原创 2014-10-18 21:09:26 · 471 阅读 · 0 评论 -
objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAsso使用场景
原创文章,转载请注明出处:http://blog.sina.com.cn/s/blog_60342e330101tcz1.html1. 概念objective-c有两个扩展机制:category和associative。我们可以通过category来扩展方法,但是它有个很大的局限性,不能扩展属性。于是,就有了专门用来扩展属性的机制:associative。 2. 使转载 2014-11-04 17:56:31 · 844 阅读 · 0 评论 -
NSNotification
1. 定义一个方法 -(void) update{ } 2. 对象注册,并关连消息 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update) name:@"update" object:nil] 3. 在要发出通转载 2014-10-31 17:02:57 · 350 阅读 · 0 评论 -
iOS多线程编程
多线程技术我们为何需要多线程呢?多线程其实是为了实现并发执行,而且线程是并发执行多个代码路径的多种技术之中比较轻量级的一种(对应较重的实现是多进程)。在单核 CPU 时代,支持多线程的操作系统会通过分配 CPU 计算时间,来实现软件层面的多线程。创建线程,线程间切换都是有成本开销的。但由于多线程可以避免阻塞所造成的 CPU 计算时间浪费,所以多线程所带来的开销成本总体看来是值得的。转载 2014-10-30 18:35:32 · 412 阅读 · 0 评论 -
Mac 10.10下的sandBox目录
Mac OS 10.10的环境下用Xcode6开发iOS程序不过我找了半天iOS Simulator的沙盒位置,在以前的版本中都是在诸如/Users/XZY/Library/Application Support/iPhone Simulator/5.1/Applications/401419FF-7B91-4262-AB68-E3AF695D8310/Library/Preference原创 2014-10-30 13:06:41 · 681 阅读 · 0 评论 -
UIViewContentMode
UIViewContentModetypedef enum { UIViewContentModeScaleToFill, UIViewContentModeScaleAspectFit, // contents scaled to fit with fixed aspect. remainder is transparent UIVie转载 2014-10-30 10:11:59 · 714 阅读 · 0 评论 -
UINavigationBar
简介 UINavigationBar是用于实现管理层级关系内容的组件,直接继承自UIView。通常用在UINavgationController类中,用于管理和显示UINavgationController的subViewController , 同时UINavgationBar也可以单独使用,添加至任何的UIView中。UINavigationBar比较重要的属性为,左侧按钮,中间的标题转载 2014-10-29 15:54:59 · 283 阅读 · 0 评论 -
iOS开发基础知识
1、Objective-C的类可以多重继承么?可以采用多个协议么?答:不可以多重继承,可以采用多个协议。2、#import和#include的区别是什么?#import#import能避免头文件被重复包含的问题:1) 一般来说,导入objective c的头文件时用#import,包含c/c++头文件时用#include。使用include要注意重复引用的问原创 2014-10-25 09:46:34 · 397 阅读 · 0 评论 -
Objective-C Runtime 运行时之六:拾遗
前面几篇基本介绍了runtime中的大部分功能,包括对类与对象、成员变量与属性、方法与消息、分类与协议的处理。runtime大部分的功能都是围绕这几点来实现的。本章的内容并不算重点,主要针对前文中对Objective-C Runtime Reference内容遗漏的地方做些补充。当然这并不能包含所有的内容。runtime还有许多内容,需要读者去研究发现。super在Obje转载 2014-11-11 12:37:16 · 301 阅读 · 0 评论 -
Objective-C Runtime 运行时之五:协议与分类
Objective-C中的分类允许我们通过给一个类添加方法来扩充它(但是通过category不能添加新的实例变量),并且我们不需要访问类中的代码就可以做到。Objective-C中的协议是普遍存在的接口定义方式,即在一个类中通过@protocol定义接口,在另外类中实现接口,这种接口定义方式也成为“delegation”模式,@protocol声明了可以呗其他任何方法类实现的方法,协议仅仅转载 2014-11-11 12:35:51 · 394 阅读 · 0 评论 -
Objective-C Runtime 运行时之四:Method Swizzling
在上周associated object一文中,我们开始探索Objective-C运行时的一些黑魔法。本周我们继续前行,来讨论可能是最受争议的运行时技术:method swizzling。 Method swizzling指的是改变一个已存在的选择器对应的实现的过程,它依赖于Objectvie-C中方法的调用能够在运行时进改变——通过改变类的调度表(dispatch table)中转载 2014-11-11 12:32:05 · 350 阅读 · 0 评论 -
初识MKNetworkKit
最近在研究MKNetworkEngine,也不能叫研究,应该算是大致浏览了一边,对部分的结构有了一点的了解.本片博文里,对部分比较常用的功能做了简单的介绍,至于底层的原理,本人目前能力有限,只能略知一二,网上关于这方面的资料少到又少,千篇一律(文章最后有作者的译文(有删减)博客原文地址:http://blog.mugunthkumar.com/products/ios-framework-原创 2014-09-20 16:07:19 · 809 阅读 · 0 评论 -
Objective-C Runtime 运行时之一:类与对象
Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时能够更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。这种特性意味着Objective-C不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。对于Objective-C来说,这个运行时系统就像一个操作系统一样:它让所有的转载 2014-11-05 09:30:27 · 326 阅读 · 0 评论