- 博客(91)
- 收藏
- 关注
转载 iOS面试题精选总结——综述(一)
1.OC语言的特点 OC语言是C语言的一个超集,只是在C语言的基础上加上了面向对象的特性; OC与Java语言相同都是单继承,这一点与C++语言不同; OC不支持命名空间机制,取而代之的是类名之前添加前缀,以此来区分; OC作为一门面向对象的语言,自然具有面向对象的语言特性,如:封装,继承,多态。它具有静态语言的特性,又有动态语言的效率。
2017-06-22 10:29:29
948
转载 ios学习路线—ios沙盒(sandbox)机制和文件操作(三)
1.在Documents里创建目录NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *documentsDirectory = [paths objectAtIndex:0]; NSLog(@"documentsDirectory%@
2016-06-28 17:06:46
310
原创 ios学习路线—ios沙盒(sandbox)机制和文件操作(二)
1.获取程序的Home目录NSString *homeDirectory = NSHomeDirectory(); NSLog(@"path:%@", homeDirectory); 2.获取document目录NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,
2016-06-28 16:53:19
289
转载 ios学习路线—ios沙盒(sandbox)机制和文件操作(一)
一.iOS沙盒机制 iOS应用程序只能在为该程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。 1.每个应用程序都有自己的存储空间 2.应用程序不能翻过自己的围墙去访问别的存储空间的内容 3.应用程序请求的数据都要通过权限监测,假如不符合条件的话,不会被放行。通过这张图只能从表层上理
2016-06-28 16:36:38
305
转载 ios学习路线—Objective-C(nil与release的区别与用法)
首先说一下他们两的作用 1.nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系,它对内存的释放没有什么作用。 2.release才是真正用于内存释放的,release后系统会将该内存标记为可以(可重新分配)。二者使用顺序 如果没有release就直接nil,那么虽然不会出错(release一个空指针是合法的),但却等于自己制造了内存泄露,因为nil之后release就已经不起作
2016-06-20 21:28:08
434
转载 ios学习路线—iOS高级(Socket(AsyncSocket))
网络各个协议:TCP/IP、SOCKET、HTTP等 网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象; 传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。 http协议 对应于应用层 tcp协议 对应于传输层 ip协议 对应于网络层
2016-06-20 09:58:38
298
转载 ios学习路线—推送通知
理解Apple推送通知的机制 从上面的流程图中,可以看到一个能接收推送通知的App,需要3个东西: 1.App ID(唯一标识一个App程序) 2.Provisioning Profile(App程序的发布需要它,所以推送通知只能在真机上测试) 3.Device Token(设备标识,这个是推送通知功能中特有的)而能推送通知的服务器端则要2个东西: 1.SSL Certificate
2016-06-20 00:50:20
252
转载 ios学习路线—静态变量,全局变量exterm,局部变量,实例变量
1.静态变量 static 什么是静态变量:从面向对象的角度触发,当需要一个数据对象为整类而非某个对象服务,同时有力求不破坏类的封装性,既要求此成员隐藏在类的内部,有要求对外不可见的时候,就可以使用static。 静态变量的优点: 1.节省内存。静态变量只存储一处,但供所有对象使用。 2.它的值是可以更新的。 3.可提高时间效率。只要某个对象对静态变量更新一次,所有的对象都能访问更新后的
2016-06-19 09:26:38
797
转载 ios学习路线—iOS高级(GCD)
什么是 GCD GCD 是 libdispatch 的市场名称,而 libdispatch 作为 Apple 的一个库,为并发代码在多核硬件(跑 iOS 或 OS X )上执行提供有力支持。它具有以下优点: 1.GCD 能通过推迟昂贵计算任务并在后台运行它们来改善你的应用的响应性能。 2.GCD 提供一个易于使用的并发模型而不仅仅只是锁和线程,以帮助我们避开并发陷阱。 3.GCD 具有在常见
2016-06-19 02:40:59
319
转载 ios学习路线—iOS高级(NSOperationQueue)
一.简介 NSOperationQueue类主要管理一组NSOperation对象的执行。当NSOperation对象添加到queue中之后,NSOperation对象一直在queue中,直到此operation被cancel或者完成其任务。Operaions(不包含已经执行中的operations)在queue中是按照operaion优先级和operaions内部直接的依赖属性组织的,并执行。一
2016-06-19 00:53:37
256
转载 ios学习路线—iOS高级(NSThread)
简介 NSThread是轻量级的,但也是使用起来最负责的,你需要自己管理thread的生命周期,线程之间的同步。线程共享同一个应用程序的部分内存空间,它们拥有对数据相同的访问权限。 你得协调多个线程 对同一数据的访问,一般做法是在访问之前加锁,这会导致一定的性能开销。在 iOS 中我们可以使用多种形式的 thread。NSThread的使用 NSThread有两种直接创建方式//实例方法-会直
2016-06-18 23:11:52
209
转载 ios学习路线—iOS高级(UDP)
UDP简介 UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议。UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的C/S模式的网络应用都需要使用UDP协议。UDP协议直接位于IP(网际协议)协议的
2016-06-18 20:02:18
898
转载 ios学习路线—iOS高级(TCP/IP协议)
网络七层协议 OSI是一个开放性的通信系统互连参考模型,他是一个定义的非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。 OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 其中高层,即7、6、5、4层定义了应用程序的功能,下面3层,即3、2、1层主要面向通过网络的端到端的数据流。TCP协议 TCP协议是面向连接、保证高
2016-06-18 19:20:45
725
转载 ios学习路线—iOS高级(HTTP协议)
什么是HTTP协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器Web服务器,浏览器,代理服务器 当我们打开浏览器,在地址栏中输入URL,然后我们就看到了网页。 原理是怎样的呢? 实际上我们输入URL后,我们的浏览器给Web服务器发送了一个Reques
2016-06-18 18:13:27
771
转载 ios学习路线—iOS高级(ASIHTTPRequest)
ASIHTTPRequest是一款极其强劲的HTTP访问开源项目。让简单的API完成复杂的功能。 如: 异步请求,队列请求,GZIP压缩,缓存,断点续传,进度跟踪,上传文件,HTTP认证 在新的版本中,还加入了Objective-C闭包Block的支持,让我们的代码更加轻简灵活。
2016-06-18 13:06:03
193
转载 ios学习路线—iOS高级(AFNetworking)
1.全称是AFNetworking 2.虽然运行效率没有ASI高,但是使用比ASI简单 3.是对NSURLConnection和NSURLSession的各自的一层包装AFN的内部中的RunLoop 1.AFN内部开了一条专门用来访问网络请求的线程 2.在这个开线程的方法中,他把方法和dispatch_once都用static修饰了下 3.以保证这个方法的安全性以及只开辟一块内存空间,而且
2016-06-18 12:41:23
326
转载 ios学习路线—iOS高级(SDWebImage)
SDWebImage是一个很厉害的图片缓存的框架。既ASIHttp+AsyncImage之后,我一直使用AFNetworking集成的UIImageView+AFNetworking.h,但后者对于图片的缓存实际应用的是NSURLCache自带的cache机制。而NSURLCache每次都要把缓存的raw data 再转化为UIImage,就带来了数据处理和内存方面的更多操作。SDWebImage
2016-06-18 11:10:21
269
转载 ios学习路线—iOS高级(UIWebView)
网络开发中还有一个常用的UI控件UIWebView,它是iOS中内置的浏览器控件,功能十分强大。如一些社交软件往往在应用程序内不需要打开其他浏览器就能看一些新闻之类的页面,就是通过这个控件实现的。需要注意的是UIWebView不仅能加载网络资源还可以加载本地资源,目前支持的常用的文档格式如:html、pdf、docx、txt等。浏览器实现 下面将通过一个UIWebView开发一个简单的浏览器,界面
2016-06-18 01:34:22
277
转载 ios学习路线—iOS高级(网络)
概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的。如今,网络编程越来越普遍,孤立的应用通常是没有生命力的。今天就会给大家介绍这部分内容Web请求和响应 使用代理方法 做过Web开发的朋友应该很清楚,Http是无连接的请求。每个请求request服务器都有一个对应的响应response,无论是asp
2016-06-17 18:23:33
548
转载 ios学习路线—iOS高级(Masonry)
Masonry 1.Masonry是公认非常简洁优美的一款Autolayout框架 2.我推荐大家重点学习这个框架 3.我会把Autolayout的思维融合这个框架一起讲解Masonry的使用 1.想要使用第三方Masonry要么要去GitHub上下载原代码下来拖进项目中,要么就直接使用cocoapods,pod search Masonry,下载最新版。 2.cocoapods的使用不是
2016-06-17 16:07:28
857
转载 ios学习路线—iOS高级(VFL语言)
什么是VFL语言 VFL(Visual Format Language),“可视化格式语言”。 VFL是苹果公司为了简化autolayout的编码而推出的抽象语言。 语法说明//cancelButton宽72,acceptButton宽50,它们之间间距12H:[cancelButton(72)]-12-[accptButton(50)]//wideView宽度大于等于60point,该约束
2016-06-17 15:26:52
433
转载 ios学习路线—UIKit框架(UIStackView)
UIStackView介绍 1.1. UIStackView 是iOS9中新增的一个视图,用来管理一行或一列视图的组合。2.对于开发者来说堆栈视图(UIStackView)的引入值得一提。我知道对于一些开发者来说使用autolayout设计一些复杂的交互界面是比较困难的。UIStackView正好能帮助到并让我们的开发者的工作变得更容易些。UIStackView提供了一个高效的接口用于平铺一行或一
2016-06-17 10:33:30
506
转载 ios学习路线—Objective-C(Runtime 拾遗)
本章的内容并不算重点,主要针对前文中对Objective-C Runtime Reference内容遗漏的地方做些补充。当然这并不能包含所有的内容。runtime还有许多内容,需要读者去研究发现。super 在Objective-C中,如果我们需要在类的方法中调用父类的方法时,通常都会用到super,如下所示:@interface MyViewController: UIViewControlle
2016-06-17 01:29:00
204
转载 ios学习路线—Objective-C(Runtime 协议与分类)
Objective-C中的分类允许我们通过给一个类添加方法来扩充它(但是通过category不能添加新的实例变量),并且我们不需要访问类中的代码就可以做到。Objective-C中的协议是普遍存在的接口定义方式,即在一个类中通过@protocol定义接口,在另外类中实现接口,这种接口定义方式也成为“delegation”模式,@protocol声明了可以被其他任何方法类实现的方法,协议仅仅是定义一个
2016-06-17 01:01:40
535
转载 ios学习路线—Objective-C(Runtime Method Swizzling)
Method Swizzling是改变一个selector的实际实现的技术。通过这一技术,我们可以在运行时通过修改类的分发表中selector对应的函数,来修改方法的实现。例如,我们想跟踪在程序中每一个view controller展示给用户的次数:当然,我们可以在每个view controller的viewDidAppear中添加跟踪代码;但是这太过麻烦,需要在每个view controll
2016-06-17 00:27:22
202
转载 ios学习路线—Objective-C(Runtime方法与消息)
基础数据类型 SEL又叫选择器,是表示一个方法的selector的指针,其定义如下:typedef struct objc_selector *SEL;objc_selector结构体的详细定义没有在头文件中找到。方法的selector用于表示运行时方 法的名字。Objective-C在编译时,会依据每一个方法的名字、参数序列,生成一个唯一的整型标识(Int类型的地址),这个标识就是SEL。如下
2016-06-16 23:01:24
239
转载 ios学习路线—Objective-C(Runtime成员变量与属性)
类型编码(Type Encoding) 作为对Runtime的补充,编译器将每个方法的返回值和参数类型编码为一个字符串,并将其与方法的selector关联在一起。这种编码方案在其它情况下也是非常有用的,因此我们可以使用@encode编译器指令来获取它。当给定一个类型时,@encode返回这个类型的字符串编码。这些类型可以是诸如int、指针这样的基本类型,也可以是结构体、类等类型。事实上,任何可以作
2016-06-16 18:21:19
307
转载 ios学习路线—Objective-C(Runtime类与对对象)
简介 Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时能够更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。这种特性意味着Objective-C不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。对于Objective-C来说,这个运行时系统就像一个操作系统一样:它让所有的工
2016-06-16 14:56:32
259
转载 ios学习路线—Objective-C(Runtime消息机制)
RunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数( C语言的函数调用请看这里 )。编译完成之后直接顺序执行,无任何二义性。OC的函数调用成为消息发送。属于动态调用过程。在编译的时候并不能决定真正调用哪个函数(事实证明,在编 译阶段,OC可以调用任何函数,即使这个函数并未实现,只要申明过就不会报错。而C语言在编译阶段
2016-06-16 14:07:14
305
原创 ios学习路线—Objective-C(新特性)
1.方法顺序无关 Objective-C类由声明文件h和实现文件m组成,所有的public方法都在h文件中声明,private方法可以写在m文件中,但是在早期的编译环境中需要注意方法的顺序,例如下面的代码,在早期的编译环境会给出警告: 类和方法声明:@interface ObjcNewFeatures : NSObject-(void)doSomething:(NSString *) text
2016-06-16 12:33:39
349
转载 ios学习路线—Objective-C(NSObject)
继承关系图 Initalizing a Class 一个类的实例在使用前需要先初始化,initilalize在一个类中只被调用一次。+ (void)initialize 只要一个类或者Categories只要被添加到Objective-C的运行时就会调用此方法;加载后实现这个方法来执行类的特殊行为。+ (void)load Creating,Copying,and Deallocation
2016-06-16 10:57:53
489
转载 ios学习路线—Objective-C(生命周期)
视图控制器生命周期 当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序 1.alloc 创建对象,分配空间 2.init(initWithNibName) 初始化对象,初始化数据 3.loadView 从nib载入视图,通常这一步不需要
2016-06-16 01:52:01
1863
转载 ios学习路线—Objective-C(通知机制)
iOS 提供了一种 “同步的” 消息通知机制,观察者只要向消息中心注册, 即可接受其他对象发送来的消息,消息发送者和消息接受者两者可以互相一无所知,完全解耦。这种消息通知机制可以应用于任意时间和任何对象,观察者可以有多个,所以消息具有广播的性质,只是需要注意的是,观察者向消息中心注册以后,在不需要接受消息时需要向消息中心注销,这种消息广播机制是典型的“Observer”模式。这个要求其实也很容易实现
2016-06-16 01:10:39
246
转载 ios学习路线—Objective-C(Block)
1.第一部分 定义和使用Block- (void)viewDidLoad{ [super viewDidLoad]; //(1)定义无参无返回值的Block void(^printBlock)() = ^(){ printf("no number"); }; printBlock(); printBlock(9); int mul
2016-06-16 00:12:12
253
转载 ios学习路线—Objective-C(KVO)
一.前言 Objective-C 中的键(key)-值(value)观察(KVO)并不是什么新鲜事物,它来源于设计模式中的观察者模式,其基本思想就是: 一个目标对象管理所有依赖于它的观察者对象,并在它自身的状态改变时主动通知观察者对象。这个主动通知通常是通过调用各观察者对象所提供的接口方法来实现的。观察者模式较完美地将目标对象与观察者对象解耦。 在 Objective-C 中有两种使用键值观察
2016-06-15 22:31:14
173
转载 ios学习路线—Objective-C(KVC)
一.简介 全称是Key-value coding,翻译成键值编码。它提供了一种使用字符串而不是访问器方法去访问一个对象实例变量的机制。二.KVC相关技术 1.Key和Key Paht KVC定义了一种按名称访问对象属性的机制,支持这种访问的主要方法是:- (id)valueForKey:(NSString *)key;- (void)setValue:(id)value forKey:(NS
2016-06-15 18:26:11
179
转载 ios学习路线—Objective-C(Extension)
类的延展可以看作是一种匿名的类目,类有时需要一些只为自己所见,所用的私有方法这种私有方法可以通过延展的方式来声明,延展中定义的方法在类本身的@implementation代码区域中进行实现。@interface MyObject : NSObject{ NSNumber *number; }- (NSNumber *)number;@end @interface MyObj
2016-06-15 17:46:53
354
转载 ios学习路线—Objective-C(Protocol)
protocol(协议):我的理解就是定义这么一个东西。以后就按这里的规定来办事。 delegate(委托):就是把事情委托给别人去办。 @required 就是必须去办的。 @optional则是可做或不做。关于delegate protocol 网上有一个例子讲的非常形象: 我上班的工作主要内容包括 (1)写代码(2)写文档(3)测试程序(4)接电话(5)会见客户 (1)(2)我自
2016-06-15 17:26:10
205
转载 ios学习路线—Objective-C(Category)
Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的,在很多情形下Category也是比创建子类更优的选择。新添加的方法同样也会被被扩展的类的所有子类自动继承。当知道已有类中某个方法有BUG,但是这个类是以库的形式存在的,我们无法直接修改源代码的时候,Category也可以用于替代这个已有类中某个方法的实体,从而达到修复BUG的目的。然而却没有什么便捷的途径可以去调用已有类中原有的
2016-06-15 17:15:25
274
转载 ios学习路线—Objective-C(深浅拷贝)
在ObjC中,什么是深浅拷贝? 深浅拷贝分别指深拷贝和浅拷贝,即mutableCopy和copy方法。 copy复制一个不可变对象,而mutableCopy复制一个mutable可变对象。非容器类对象 如NSString,NSNumber等一类对象 示例1: // 非容器类对象 NSString *str = @"origin string"; NSString *st
2016-06-15 16:05:24
294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人