iOS开发--提高篇
文章平均质量分 86
陌苏湮雪
擅长PHP研发,对MySQL NoSQL有浓厚兴趣
展开
-
iOS性能调优
本文转载自:http://blog.jobbole.com/37984/写在前面本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员。这是他的个人网站:http://www.marcelofabri.com/,你还可以在Twitter上关注@marcelofabri_。性能对 iOS 应用的开发尤其重转载 2015-11-17 20:34:35 · 703 阅读 · 0 评论 -
iOS7 SDK新特性
iOS 7 是一个主要更新,UI被重新设计,另外 iOS7还引入新的动画系统来创建2D 2.5D的游戏。多任务强化,点对点链接 以及其他一些重要的特性。iOS7中添加的框架主要有:GameControllerJavascriptCoreMediaAccessibilityMultipeerConnectivity=SafariServicesSpriteKit原创 2016-03-17 18:19:56 · 626 阅读 · 0 评论 -
iOS8 SDK新特性
1.应用扩展允许我们在app中添加一个新的target用以提供一些扩展功能,比如在系统通知中心显示一个自己的widget,在某些应用的Action中加入自己的操作,在分享按钮中加入自己的条目,甚至添加自己的键盘等。每一种操作对应一个应用扩展的入口,在开发中我们只需要在工程中新建立一个对应相应入口的target,就能从一个很好的模版开始一些列开发,来实现传统意义上可能需要越狱才能实现的功能。原创 2016-03-17 18:21:08 · 1048 阅读 · 0 评论 -
iOS9 SDK新特性
1.多任务分屏模式 iPad2.画中画 iPad3.watch OS 2 新系统中watch App的extension将不像现在这样存在于iPhone中,而是会直接安装到手表中去。4.UITestXcode自带一个XCUITest测试工具,针对于app的UI测试。5.Swift 2 6.APP Thinning 对于不同系统的设备只下载本系统需要的资源。7.针对从右原创 2016-03-17 18:22:17 · 1078 阅读 · 0 评论 -
【面试题目】第二篇
1.描述oc中category和Extension的区别 并分别列举使用场景 分类和扩展是OC中的特殊语法。OC是一门面向对象的语言,支持面向对象特性。在语言设计的角度讲,类别符合开闭原则,对修改关闭,对扩展开放。协议和分类正是此类。分类是为类提供额外的接口和实现,但是不能添加属性。扩展是私有化方法和属性的,对外访问是封闭的。以图片下载为例,如果在详细的使用场景中需要多次使原创 2016-02-18 18:04:40 · 421 阅读 · 0 评论 -
【提高】面试--三
1.重写一个类用继承还是分类?继承2.GCD异步加载一张图片dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);__block UIImage * image = nil;dispatch_async(queue,^{NSURL * url = [NSUR原创 2016-02-19 16:40:25 · 398 阅读 · 0 评论 -
【提高】面试四
1.UIVIew中frame和bounds的区别 bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系的坐标和大小 区别主要在坐标系这一块。 很明显一个是自己为原点的坐标系,一个是以屏幕为原点的坐标系。frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)bounds指原创 2016-02-19 17:06:55 · 435 阅读 · 0 评论 -
【提高】面试五
1.无序数组 ab b重元素在a中都有 找出在a中但不在b中的所有元素 写出时间复杂度 查找的算法。留坑2.kvc kvo 区别 在什么场景使用key value coding key value observerkvc是用于设置值,kvc是用于检测某个值得变化3.block使用时注意点 怎么避免? 在前面讲到4.本地通知和推送通知的区别? (留坑)5.单例?试着写原创 2016-02-19 17:21:20 · 457 阅读 · 0 评论 -
问题
ld: library not found for -lAFNetworkingclang: error: linker command failed with exit code 1 (use -v to see invocation)盯了错误半天才突然发现 自己使用了CocoaPods却没有使用workspace打开。然后 Project -> Pods 里面的 “Buil原创 2016-03-09 22:41:22 · 440 阅读 · 0 评论 -
优化
1. 用ARC管理内存ARC(Automatic ReferenceCounting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露。它自动为你管理retain和release的过程,所以你就不必去手动干预了。忘掉代码段结尾的release简直像记得吃饭一样简单。而ARC会自动在底层为你做这些工作。除了帮你避免内存泄露,ARC还可以帮你转载 2016-03-09 23:47:30 · 476 阅读 · 1 评论 -
OC的优缺点
objc优点: 1) Cateogies 2) Posing 3) 动态识别4) 指标计算 5)弹性讯息传递 6) 不是一个过度复杂的 C 衍生语言 7) Objective-C 与 C++ 可混合编程 缺点: 1) 不支援命名空間 2) 不支持运算符重载3) 不支持多重继承4) 使用动态运行时类型,所有的方法都是函数调用,原创 2016-03-09 23:55:55 · 2692 阅读 · 0 评论 -
CocoaPods安装使用
一.安装1,升级Ruby环境sudo gem update --system2.安装CocoaPods的时候我们需要访问cocoapods,org 用淘宝的RubyGems镜像来代替官方版本,执行以下命令$ gem sources --remove https://rubygems.org///等有反应之后再敲入以下命令$ gem sources -a https://ruby转载 2016-03-22 13:08:35 · 458 阅读 · 0 评论 -
【面试】
1.怎么样适配ios系统和ios屏幕ios适配系统代码写法[[UIDevice currentDevice] systemVersion] 和NSFoundationVersionNumber也可以在base SDK 中修改版本号ios8中NSProcessInfo -isOperatingSystemAtLeastVersionios屏幕适配 2.什么是静态库 静态库和动态库原创 2016-02-26 09:49:06 · 1580 阅读 · 0 评论 -
[面试相关]
1.写一个NSString类的实现+(id)initWithCString:(c*****t char *)nullTerminatedCStringencoding:(NSStringEncoding)encoding;+ (id) stringWithCString:(c*****t char*)nullTerminatedCString encodi原创 2016-02-26 09:52:04 · 646 阅读 · 0 评论 -
iOS开发面试题目(高级向)
最近在看喵神的博客 发现一个博客是写iOS的面试题目的。转载之。原地址:https://onevcat.com/2013/04/ios-interview/你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了什么?你还能记得你所使用的相关的头文件或者某些方法的名称吗?你实现过多线程的Core Data么?NSPersis转载 2016-03-17 16:17:56 · 2498 阅读 · 1 评论 -
【提高】沙盒目录文件解析
一、沙盒中几个主要的目录每个沙盒下面都有相似的目录结构,如下图所示(出自苹果官方文档): 每个应用的沙盒目录都是相似的,主要包含图中所示的4个目录:1、MyApp.app①存放内容 该目录包含了应用程序本身的数据,包括资源文件和可执行文件等。程序启动以后,会根据需要从该目录中动态加载代码或资源到内存,这里用到了lazy loading的思想。 ②整个目录是只读的 为了防止被转载 2016-02-19 14:04:30 · 714 阅读 · 0 评论 -
【iOS提高】单例模式在OC的使用
有三种方法可以保证当前的程序中只有一个对象实例。1.GCD+(instancetype)sharedInstance2{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ single = [[self alloc]init]; }); return single;原创 2016-02-19 11:44:04 · 518 阅读 · 0 评论 -
iOS clang编译Objective-C程序
1.简介Clang是一个C,C++,Objective-C,Objective-C++语言的轻量级编译器。源代码发布于BSD协议下。终端用户特色:快速编译和较少内存占用[3] ;有诊断功能;兼容GCC;实用工具和应用:基础架构模块库;可满足多样的客户需求(代码重构,静态分析,代码生成,等);允许集成到各种IDE中;使用LLVM'BSD'协议;内部设计与实现:一个简单的原创 2015-11-17 21:43:12 · 2826 阅读 · 0 评论 -
iOS category内部实现原理
转载自:http://tech.meituan.com/DiveIntoCategory.html摘要无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择。但是在Objective-C 2.0中,又提供了category这个语言特性,可以动态地为已有类添加新行为。如今category已经遍布于Obje转载 2015-11-17 22:28:34 · 18193 阅读 · 4 评论 -
iOS 事件传递机制和响应者链条
iOS响应者链条iOS中加载的时候会先执行main函数int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); }}根据main函数的参数加载UIAppli...原创 2015-11-26 21:37:07 · 6991 阅读 · 0 评论 -
【iOS开发】CoreText的使用(1)
简述CoreText是用于处理文字和字体的底层技术,它直接和Core Graphics(又名Quartz2D)交流。Quartz是一个2D图形渲染引擎,能够处理OS X和iOS的图形显示问题Quartz能够直接处理字体(font)和字形(glyphs)将文字渲染到界面上,它是基础库中的唯一能够处理字形的模块。因此,Core Text为了排版,需要将显示的文本内容 位置 字体字形直接传递给Q原创 2016-01-16 22:57:58 · 1328 阅读 · 0 评论 -
CoreText使用(2)图文混排
在一个UIVIew的子空间上实现图文混排。支持本地图片和网络图片显示 不支持图片点击监听的功能。CoreText从绘制纯文本到绘制图片 使用NSAttributedString 但是图片实现是用一个空白字符作为NSAttributedString的占位符 然后设置代理 告诉Core Text给该占位字符留出一定宽度高度 最后把图片绘制到预留位置。思路:网络图片没有下载完 先绘制占位图片原创 2016-01-18 19:03:45 · 614 阅读 · 0 评论 -
【iOS开发】UIBezierPath
基础知识使用UIBezierPath可以创建基于矢量的路径 此类是Core Graphics的封装。使用这个类可以定义简单的形状 如椭圆、矩形或者有多个直线和曲线段组成的形状等。UIBezierPath是CGPathRef数据类型的封装,如果是基于矢量形状的路径,都用直线和曲线去创建,我们使用直线段创建矩形和多边形,使用曲线去创建圆弧圆或者其他的复杂的曲线形状。使用UIBezierPa转载 2016-01-22 22:20:38 · 1156 阅读 · 0 评论 -
【iOS提高】CoreAnimation--Layer
前言 iOS中能看见的东西都是view 比如一个按钮 一个文本标签等。UIView之所以能显示在屏幕上 完全是因为内部的图层。 在创建UIView对象时 UIView内部会自动创建一个图层 CALayer对象 通过UIView的layer属性可以访问这个层 当UIView需要显示到屏幕上 会调用drawRect方法绘图 并且将所有内容绘制到自己图层上原创 2016-01-29 19:42:37 · 345 阅读 · 0 评论 -
【iOS提高】CoreAnimation概述
一、简介CoreAnimation 顾名思义核心动画。在2007年被引入,iOS中强大的动画处理API,目的是为Apple应用开发出可观绚丽的动画效果。CoreAnimation可以在iOS OX X上应用。其动画执行过程都是在后台执行,不会阻塞主线程。直接作用于CALayer,而非UIView。二、使用1.iOS6之前需要引入QuartzCore.framework 引入头文件转载 2016-01-30 23:42:26 · 329 阅读 · 0 评论 -
【iOS开发】类簇--抽象工厂模式在OC中的使用
简介Class Clusters(类簇)是抽象工厂模式在iOS下的一种实现,众多常用类,如NSString、NSArray、NSDictionary以及NSNumber都运作在这一模式下,它是接口简单性和扩展性的权衡体现,在我们完全不知情的情况下,偷偷隐藏了很多具体的实现类,只暴露出简单的接口。NSArray的类簇原有的alloc+init拆开写:-(void)clus原创 2016-01-14 00:09:50 · 2703 阅读 · 2 评论 -
【iOS开发】runtime机制
RunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数( C语言的函数调用请看这里 )。编译完成之后直接顺序执行,无任何二义性。OC的函数调用成为消息发送。属于动态调用过程。在编译的时候并不能决定真正调用哪个函数(事实证明,在编 译阶段,OC可以调用任何函数,即使这个函数并未实现,只要申明过就不会报错。而C语言在编译阶转载 2016-01-14 19:53:41 · 383 阅读 · 0 评论 -
Mac下svn的使用
如何在Mac环境下搭建svn服务器端环境。创建代码仓库,用来存储客户端所上传的代码我先在/User/apple目录下新建一个svn目录,以后可以在svn目录下创建多个仓库目录打开终端,创建一个mycode仓库,输入指令:svnadmin create /Users/apple/svn/mycode指令执行成功后,会发现硬盘上多了个/Users/apple/svn/m转载 2016-03-16 11:26:15 · 415 阅读 · 1 评论 -
【面试题目】第一篇
1..Oc如何声明私有方法和私有变量?私有方法是在.h文件中未声明而在.m文件中实现的方法。私有变量是在类扩展中定义的变量。2.OC可以实现多重继承吗?不可以。OC是c的超集,在c中没有多重继承OC也没有。C++中引入了多重继承,Java是有多重继承的。如果想在OC实现多重继承,需要用协议。3.什么是动态运行时语言?都有哪些?动态运行时,在OC中被称为Runtime。将原创 2016-02-18 12:07:32 · 458 阅读 · 0 评论 -
【提高】initWithNibName和loadNibNamed的区别和联系
联系:都可以用来从xib文件加载用户界面到我们代码中去。这样可以通过操作这个加载进来的对象操作xib文件内容。1. ShowViewController的initWithNibName方法ShowViewController * showMessage = [[ShowViewController alloc]原创 2016-02-18 17:55:31 · 942 阅读 · 0 评论 -
AFN二次封装
前言对于开发人员来说,学习网络层知识是必备的,任何一款App的开发,都需要到网络请求接口。很多朋友都还在使用原生的NSURLConnection一行一行地写,代码到处是,这样维护起来更困难了。对于使用AFNetworking的朋友来说,很多朋友都是直接调用AFNetworking的API,这样不太好,无法做到全工程统一配置。最好的方式就是对网络层再封装一层,全工程不允许直接使用AFNe转载 2016-02-26 09:54:59 · 3699 阅读 · 0 评论