
iOS高级进阶
DoctorGG
编程是一门艺术
展开
-
设计模式之工厂方法和抽象工厂
前言最近在研究设计模式,因为工厂方法与抽象工厂有很多相似之处,看过一些书籍和网上相关的帖子,现在根据自己的一些理解写出来供大家参考。工厂方法工厂方法要解决的问题是对象的创建时机,它提供了一种扩展的策略,很好地符合了开放封闭原则。工厂方法也叫做虚构造器(Virtual Constructor)。工厂方法中的静态类结构原创 2014-10-23 18:53:27 · 328 阅读 · 0 评论 -
[UIKeyboardLayoutStar release] && [UIKeyboardTaskEntry dealloc]
这篇文章是近期解过的一个bug,由于我的日志是在Crashlytics上拿到的,很有迷惑性,此次写下来希望对遇到这种错误的小伙伴有帮助。 1.先上崩溃日志: #0. Crashed: com.apple.main-thread 0 libobjc.A.dylib 0x18da99704 objc_object::release() + 8 1 libs原创 2017-05-26 22:54:55 · 3431 阅读 · 0 评论 -
XCode错误集锦
1.Xcode : Could not launch process launch failed: timed out waiting for app to launch 解决方法:重启XCode2.Xcode error “Could not find Developer Disk Image” 解决方法:xcode版本与真机的系统版本不匹配。升级的匹配版本。原创 2016-04-30 15:56:07 · 1000 阅读 · 0 评论 -
iOS大厂面试题
陆续面试了了一些大厂,感觉如果不留下点什么,有点说不过去,现将面试时,被问到的一些问题发出来,供大家一起学习参考吧。自我介绍(虽然看着没什么,但是这个能给面试官一些基本的信息,一份好的自我介绍,还是值得我们花时间准备的)命令行自动打包ipa的流程,由于本人是写了一个shell的脚本,进行的命令行打包。如果没做过的话问到的可能性不大。shell是如何传参,如何获取参数的, $0代表的代表的是什么。原创 2017-02-25 19:28:04 · 2701 阅读 · 0 评论 -
#pragma进阶
对于#pragma的使用,最初的设计是为了使源代码在不同的编译器下能够兼容,而xcode将#pragma的作用发挥到了极致。#pragma是一个预处理命令,实在编译时进行计算的。 综合起来#pragma的作用主要就两个整理代码防止编译警告整理代码 说到这里,就是如何写出整洁优雅的代码了。#pragma算是其中比较重要的一个命令。直接上代码@implementation ViewContro原创 2016-12-13 11:49:08 · 571 阅读 · 0 评论 -
iOS开发:正则表达式
正则表达式是一种用来进行文本匹配的工具,其语法优美简洁。在开发中,查找、对比以及匹配字符串是家常便饭的业务,通过正则表达式我们将这些业务描述成某些需求规则,来让我们的代码更美观、实用。例如我们要验证用户输入的密码长度是否满足6~18位的长度,新手最常见的验证方式是判断输入的密码长度return (textField.text.length >= 6 && textField.text.leng <=转载 2016-09-28 15:25:55 · 294 阅读 · 0 评论 -
NSArray排序方法比对
今天浏览到一位仁兄的帖子,提到了NSArray排序的问题,就根据自己总结写下了此篇帖子,同时附上自己的小demo,介绍一下NSArray关于排序方面的比对。个人感觉不适什么高深的知识,算是对api的使用。我归结为四种方法。手写for循环式简单排序(sortedArrayUsingSelector:)block语法式排序(sortedArrayUsingComparator:)高级排序(sor原创 2016-10-24 00:36:09 · 524 阅读 · 0 评论 -
UIImageView 序列帧动画及内存优化详解
最近有个项目要用到UIImageView序列帧的动画,就顺手研究了一下,并对齐进行了后期内存的优化。现在将代码片段和源码弄出来和大家一起分享下。// 从自己创建的bundle中获取UIImage并加入array中,最后将数组返回- (NSArray *)initialImageArray { if (self.imageBundle) { NSMutableArray *i原创 2015-11-26 11:08:34 · 8287 阅读 · 9 评论 -
Objc中的instancetype和id的异同
先来看一下instancetype和id的用法 @interface ObjA : NSObject - (id)init; @end @interface ObjA : NSObject - (instancetype)init; @end他们都能用来返回一个对象。他们的区别在于id类型是返回任意类型的对象,而instancetype原创 2015-10-28 14:22:04 · 544 阅读 · 0 评论 -
__bridge,__bridge_retained和__bridge_transfer说明
1.在非arc的情况下id和void *可以互相转换 id p = nil; void * = p; (no problem)2.在arc的情况下id和void *不能互相转换 id p = nil; void * = p; (error) 需要__bridge进行转换 id obj = [[NSObject alloc] init]原创 2015-10-27 16:19:43 · 343 阅读 · 0 评论 -
iOS之CAEmitterLayer详解
CAEmitterLayer提供了粒子系统的核心动画,笔者亲手写了个例子感受了一下,功能还是蛮强大的,理解了其中的属性相信能做出很炫的东西,接下来我们就开始详细的了解CAEmitterLayer,直接上一个雪花飘落的代码了,在代码上进行注解。 - (void)configSnowEmitterLayer { // 生成一个CAEmitterLayer CAEmitterLay原创 2015-11-11 14:55:04 · 2015 阅读 · 0 评论 -
IOS指定图片可变区域(slicing)
初衷最近做项目时一些view上用到了同一种图片,只是图片的大小不同,我们都知道,如果用同一张图片,只是简单的对齐进行缩放拉伸的话,图片就会出现模糊,或者图片的效果达不到理想的状态。在搜集了一些资料以后,发现xcode已经早想到了这个问题,也为开发者提供了相应的解决方案。现在跟大家分享出来,以供大家共同学习进步,有不足之处,希望大家多多包涵。Slicing使用xcode提供的sl原创 2015-03-04 00:21:20 · 7512 阅读 · 0 评论 -
iOS--打赌你没有真的理解isEqual,hash!
为了是文章的结构比较清晰,先理出文章的整体目录如下:为什么会有isEqual和hash方法isEqual和hash在NSString, NSArray, NSSet, NSDictionary中的使用如何重写isEqual和hash方法为什么会有isEqual和hash方法isEqual顾名思义是用来判断两个对象是否相等的。那"= =" 和isEqual的区别在哪里呢?==其实是值的...原创 2018-12-02 21:35:42 · 838 阅读 · 1 评论