自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (6)
  • 收藏
  • 关注

原创 iOS面试题积累和总结

本文针对于面试题进行收集和梳理,之所以这样做的原因有二:最基本的是为了工作而做的准备,另外,这些题目之所以能成为iOS面试官在众多题中抽取出来作为察看应试者是否对iOS开发有较为良好的理解,是因为这些题目一般都具有代表性,或者是一些大家容易忽略的细节,又或是非常重要的知识点。所以,本文将从收集到的面试题进行入手,来巩固自己的iOS知识,同时提高iOS编程能力。

2016-05-11 20:26:06 647

原创 iOS的开发中的错误解决方案

在iOS的学习和开发中,经常会遇到一些bug需要调试很久,查找很多资料才能解决,本文就针对这类问题进行归纳和总结,一方面是记录自己的开发历程中所遇到的问题,另一方面希望大家在遇到这个问题的时候能通过本文的解决方法进行debug,快速调试( 本文将会持续地不定时地更新)

2016-05-07 14:56:35 661

原创 iOS中UITabBarController的剖析

本文对UITabBarController进行分析,研究苹果内部是怎么构造出这个类的,以及我们怎么去自定义一个类

2015-10-14 21:28:31 1356

原创 iOS之模仿新浪微博项目经验总结

选择新浪微博项目进行模仿,新浪微博的数据是开放的,是一个很不错的项目,可以从中学到很多东西,伴随着项目不断地进行,我会将学到的很好的思想和方法实时更新在本文中:1、在项目中,需要大致统一导航栏左右barButtonItem的风格,那么就在每个视图控制器中中定义左右两个barButtonItem的图片,由于是统一的风格,所以几乎每次地定义,都是一样的代码。面对这样的情况,我们应该进行的操作是:自

2015-10-07 20:05:00 1871

原创 iOS之手动创建PCH文件

Xcode6之前,每个项目是会自动生成PCH文件的,PCH的全称是precompiled header,在PCH文件中导入的头文件或者是框架,都不用在具体的类中去导入了,这是PCH文件的一个优点。但是Xcode6以及现在的Xcode7是把这个文件给取消了,原因大概是为了减少编译的时间。具体的原因可以在StackOverFlow网站上看,链接为:为什么Xcode6之后取消了PCH文件的自动创建

2015-10-07 19:56:50 887

原创 iOS开发之导出ipa文件以及查看内容

在iOS系统中,IPA文件指的是iphone Application,IPA文件实质上是一个zip压缩包,我们在iOS系统上使用的软件,最初下载的都是IPA文件。打个比方,它就像windows系统中下载的“绿色软件”,解压后直接使用而无需安装,卸载的时候也只需要删除掉文件即可。安装软件到iOS系统上进行的操作是:将IPA文件解压,解压后的内容放在由一串随机码构成的目录下,这就是开发所涉及到的沙盒。

2015-10-04 10:46:37 14254

原创 iOS开发小技巧归纳

本文主要收集开发中的小技巧,文章主要的形式为列表,逐条归纳总结:1、搭建一个app的框架的时候,对于tabBarController的一个子视图控制器,经常会设置tabBarItem的title,和navigationController的title,我们往往需要进行两条代码去说明:viewController.tabBarItem.title = @"Home";navigationC

2015-10-04 10:42:35 720

原创 iOS中copy和mutableCopy的详细分析

copy和mutableCopy在实际开发中常用到,同时,copy属性修饰符也是我们在定义NSString、NSArray和block等需要用到的,要较好地掌握它们,需要从原理上去分析于理解,本文侧重于分析copy和mutableCopy是如何实现的,进一步讲解使用copy和mutableCopy时应该注意的细节问题本文分成两个部分来讲解说明,第一个是copy和mutableCopy方法的使用

2015-09-17 21:24:42 3509

原创 iOS单例设计模式详细讲解(单例设计模式不断完善的过程)

在iOS中有很多的设计模式,有一本书《Elements of Reusable Object-Oriented Software》(中文名字为《设计模式》)讲述了23种软件设计模式,这本书中的设计模式都是面向对象的,很多语言都有广泛的应用,在苹果的开发中,当然也会存在这些设计模式,我们所使用的无论是开发Mac OX系统的Cocoa框架还是开发iOS系统的Cocoa Touch框架,里面的设计模式也

2015-08-22 14:34:41 2866

原创 iOS出现键盘的同时视图向上移动的方法讲解

本文主要说明如何实现在键盘出现的时候整个视图也跟着向上移动(主要是解决键盘会遮挡textField的现象),在键盘消失的时候视图恢复到原来的位子首先分别说明下 UITextFieldDelegate 中的代理方法的用处这里是摘录自文档中的信息- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField; // r

2015-08-20 19:21:25 4449

原创 iOS百度地图SDK之实时绘制轨迹(后台仍执行)

首先,对于百度地图SDK的配置和环境搭建就不做说明,需要的人可以到这里查看 http://blog.csdn.net/nineteen_/article/details/47617167 ,本文的重点在于实现实时绘制轨迹的功能,并且对细节进行处理和优化

2015-08-14 11:15:25 11725 4

原创 应用层—万维网WWW

万维网WWW(World Wide Web)并不是某种特殊的计算机网络,而是一个大规模的、联机式的信息储藏所。万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点。本文所包含的知识点很多,我们先通过本文知识点的索引来了解万维网所涉及到的知识:一、万维网的概述二、统一资源定位符URL三、超文本传送协议HTTP1、HTTP的操作过程2、代理服务器3、HTTP的报文结

2016-01-05 15:56:02 5633 2

原创 应用层—远程终端协议TELNET

TELNET是一个简单的远程终端协议,也是作为因特网的正式标准的。TELNET能将用户的操作传到远地主机,同时也能将远地主机的输出通过TCP连接返回到用户屏幕。这种服务是透明的,看起来好像是键盘和显示器直接连接在远地主机上。因此,TELNET又称为终端仿真协议。TELNET也使用的是客户服务器方式,和FTP相同,TELNET的服务器也是有两部分组成,主进程用来接受请求,从属进程用来处理每一个连

2016-01-04 21:46:56 1081

原创 应用层—文件传输协议

本文要讨论两种文件传送协议:FTP(File Transfer Protocol)和 TFTP(Trivial File Transfer Protocol)文件传送协议主要分为两大类,第一类就是第一段中所提到的基于TCP的FTP和基于UDP的TFTP,这类的操作主要是通过复制整个文件来实现的。另外一类是联机访问(on-line access),也就是说允许多个程序 同时对一个文件进行存取。其

2016-01-03 22:17:03 2253

原创 应用层—域名系统DNS

域名系统DNS(Domain Name System)是因特网使用的命名系统,用于把便于人们使用的机器名字转化为IP地址。用户和因特网上的某个主机进行通信的时候,必须要知道对方的IP地址,但是IP地址对于用户来说是很那记住的,所以在应用层为了便于用户记忆各种网络应用,更多地是使用域名。DNS是分布式的系统,所以即使单个计算机出现问题,也不会影响到整个DNS系统的正常运行。域名到IP地址的解析是

2016-01-01 21:55:01 1463

原创 运输层—TCP的连接管理

TCP是面向连接的协议,TCP的运输连接有三个阶段:建立连接、数据传送、连接释放。我们通过下面的图来理解TCP的连接:首先,最初两端的TCP进程都处于一种CLOSD的状态,A作为客户,B作为服务器,这时候A主动打开连接,B是被动打开连接的,B的TCP服务器先创建传输控制块TCB(Transmission Control Block),准备接受连接的请求,进入到LISTEN状态,A的TCP进

2015-12-31 19:22:49 1117

原创 运输层—TCP的拥塞控制

很多人容易把TCP的流量控制和TCP的拥塞控制弄混淆,但是实际上这两者是有区别的,我们可以通过两个例子来理解TCP的流量控制和拥塞控制。TCP的流量控制例子:假设光纤网络的链路传输速率是1000Gb/s,有一个巨型计算机向一个PC机以1GB/s的速率发送文件,显然,网络的带宽是很足够的,所以不会存在网路的拥塞问题,但是流量控制是必须的,巨型计算机必须经常停下来,才能使得PC机及时接受发送的文件。T

2015-12-30 21:44:29 2205

原创 运输层—TCP的流量控制

通过滑动窗口协议我们知道传输的销量变高了,但是可能会发生这样的情况,发送方发送数据太快,接收方就来不及接受,造成了数据的损失,这时候就需要利用TCP的流量控制来进行处理:让发送方发送速率不要太快,要让接收方来得及接A向B发送数据,在连接建立的时候,B就会首先告诉A:我的接收窗口rwnd(receiver window)是400,同时我们要注意的是TCP的窗口单位是字节,而不是报文段,默

2015-12-30 12:36:25 1744

原创 运输层—滑动窗口协议

滑动窗口协议是TCP协议的精髓所在,本文将要对滑动窗口协议进行详细说明从上面的图(A的发送窗口)中可以看见,该图大致分为了三个部分,已经发送并且收到了确认的序号,发送窗口,不允许发送的这三个部分。发送窗口还可以细分为发送了还没有收到确认的以及允许发送但是还未发送的。在这几个部分中,发送窗口通常又称为通知窗口,允许发送但是还未发送的可以称为可用窗口或者是有效窗口。从上面的图(B的

2015-12-29 19:44:17 1873

原创 运输层—可靠传输的工作原理

可靠传输需要满足这两个要求:第一、传输信道不产生差错,第二、不管发送方以多快的速度发送数据,接收方总是能够来得及处理收到的数据。但是实际上的网络都不具备这两个理想条件,我们需要通过一些可靠传输的协议来实现这两个要求,从而达到可靠传输。我们先从最简单的停止等待协议说起,为了方便讲述这个协议,我们分为以下4种情况来说明:1、无差错情况发送方发送一个分组给接收方,然后接收方收到之后向发送方发

2015-12-29 15:30:42 2929

原创 网络层—距离矢量算法

本文主要介绍距离矢量路由(distance vector routing)算法,也可以叫做Bellman-Ford路由算法(这是根据设计者的名字来命名的),该算法应用于很多网络协议中,例如著名的RIP。距离矢量算法(我们简称它为DV,而链路路由算法我们简称为LS)是一种迭代的、异步的、分布式的算法。首先,说它是迭代的,是因为这个过程一直要持续到邻居之间没有更多信息需要交换为止。其次,说它是异步

2015-12-28 15:35:09 6068

原创 网络层—广播路由选择算法

不同于单播(点对点)通信的路由选择协议,广播路由选择需要提供一种从源结点到网络中的所有其他结点交付分组的服务。本文主要对广播路由选择算法进行详细说明:1、N次单播如果有N个目的结点,那么在源结点中就产生N个分组副本,然后将这N份分组传到N个目的结点,这种方法看上去十分简单,而且是可以利用单播的协议进行N次传送。但是这方法有很多致命的缺点,比如:N次单播的第一段路径都相同,那么这段路径就是被

2015-12-27 16:25:58 3666

原创 网络层—链路状态路由算法

本文讲述路由算法中的链路状态路由,链路状态路由的核心算法是Dijkstra算法,本文也会详细描述1979年以前ARPANET(Advanced Research Project Agency)一直使用的是距离矢量路由算法,但是在此之后便改为使用链路状态路由算法。当今,链路状态路由算法的变种算法——IS-IS(Intermediate System-Intermediate System)还

2015-12-17 22:23:38 16553 2

原创 运输层—TCP

本文主要对TCP进行简单的描述TCP协议的主要特点有以下几点:(1)TCP是面向连接的运输层协议。应用程序在使用TCP协议之前,就必须要建立TCP连接。传送数据完毕之后,必须释放掉已经建立的TCP连接。其实有点像打电话,拨通电话,通话,然后挂断电话。(2)TCP协议只能是点对点的。(3)TCP提供可靠交付。(4)TCP提供全双工通信。TCP允许通信双方的应用程序在任何时候都能发

2015-12-10 22:15:12 554

原创 运输层—UDP

本文主要介绍用户数据报协议UDP用户数据报协议UDP只是在IP协议上增加饿了很少的一点功能,复用和分用以及差错检测功能。UDP的主要特点由下面几个:(1)UDP是无连接的(TCP是面向连接的)(2)UDP使用尽最大努力交付,不保证可靠交付。(3)UDP是面向报文的,发送方的UDP对应用层交下来的报文,添加首部之后就下交给IP层。(4)UDP没有拥塞控制(5)UDP支持多对多

2015-12-10 15:22:49 651

原创 运输层—运输层概述

本文主要对运输层进行简要说明运输层属于面向通信部分的最高层,同时也是用户功能中的最底层。从IP层来看,通信的两端是两个主机,IP数据报的首部标志了两个通信的主机的IP地址。但是使用“两个主机进行通信”这种说法并不是很准确的。这是因为,真正进行通信的实体是主机中的进程,是这个主机中的一个进程和另一个主机中的一个进程之间进行数据的交换。所以,实际上是应用进程之间的通信,而不是主机之间的通信。而这也

2015-12-10 14:19:36 1967

原创 网络层—IP多播

本文对IP多播进行说明,主要介绍IP多播的基本内容以及多播路由选择协议1、IP多播的基本内容图a是单播的示意图,图b是多播的示意图,能够进行多播协议的路由器称为多播路由器(multicast router),在因特网上面进行多播就叫做IP多播。多播数据报和一般的数据报的区别就是多播数据报使用的是D类的IP地址作为目的地址(D类IP地址的类别位为1110)。2、多播路由选

2015-12-09 21:50:24 1151

原创 网络层—路由器的构成

本文主要介绍路由器的构成,其中包括路由器的结构和交换结构。1、路由器的结构从上图可以看出,路由器大致分为了两个部分,路由选择部分和分组转发部分。(1)路由部分也称为控制部分,其核心构件是路由选择处理机。路由选择处理机有几个任务,例如构造路由表,经常或者定期地和相邻路由器交换信息来更新路由表。(2)分组转发部分,又称为交换组织,它由三部分组成:交换结构(switching fab

2015-12-09 20:15:33 2247

原创 网络层—路由选择协议

本文将说明因特网中非常重要的路由选择协议,具体的路由算法会用专门的文章进行说明  在因特网中的路由选择协议是分层次的,也就是因特网将整个互联网分为许多较小的自治系统(autonomous system),简称为AS,原因主要是这两个方面:(1)网络规模非常大,路由器如果需要处理所有网络,将会使得路由表很大,处理起来很复杂(2)有些单位不愿意外部了解自己内部网络的布局细节和所采用的路由选

2015-12-09 15:00:21 4319

原创 网络层—ICMP

本文主要介绍ICMP(Internet Control Message Protocol)网际控制报文协议,对IP数据报进行差错报告,提高交付的机会。        ICMP报文是在IP数据报里面的,是作为IP数据报中数据的一部分。ICMP报文有两种类型,一个是ICMP差错报告报文,另外一个是ICMP询问报文。ICMP报文的前4个字节是统一的格式,一共有三个字段:类型、代码、检验和(IP数据报

2015-12-03 17:00:30 552

原创 网络层—IP地址的三种分类方式

本文主要介绍网络层中的IP地址,其中有三种地址管理方法也将会详细介绍说明IP地址是给因特网上的每一个主机或者是路由器的每一个接口(注意是接口,而不是主机或者是路由器本身)分配的一个在全世界范围中唯一的32位的标识符。IP地址是由ICANN(Internet Corporation for Assigned Names and Numbers)机构进行分配的。IP地址现在有三种编址方法:

2015-12-01 17:09:57 12974

原创 网络层—网际协议IP

本文主要大致介绍网际协议IP(Internet Protocol),通过本章的简要说明,引导进入网际协议IP的深入学习。对于计算机网络,大家都知道TCP/IP协议体系是很重要的,那么在网络层,我们主要对IP协议进行详细学习,与IP协议配套使用的还有另外的几个协议:(1)ARP(Address Resolution Protocol)地址解析协议(2)ICMP(Internet Cont

2015-12-01 17:03:47 715

原创 网络层—网络层提供的两种服务

本文主要说明网络层提供的两种服务,一种是虚拟电路(Virtual-Circuit 称为VC),另外一种是数据报服务(datagram network)。这两种服务有各自的特点,以下将会详细讨论:1、虚拟电路服务虽然因特网是一个利用数据报服务传输信息的,但是很多其他网络体系结构(例如ATM)使用的是虚拟电路网络。我们先通过电信网来了解虚拟电路,电信网进行的是面向连接的通信方式,使用昂贵的程控

2015-11-30 19:52:53 28026

原创 数据链路层—三个基本问题

本文主要介绍数据链路层传输数据需要注意的最基本的三个问题 当我们需要传输数据的时候,我们应该这考虑:首先,将数据封装成帧(帧是数据链路层的基本单位),考虑去怎么封装,才能让接受端识别一个完整的帧,同时接收端让所有数据都能顺利传输,而不应该受到限制导致某些数据不能传输。接着,发送端发送完数据,经过信道,有时候因为外部原因而导致帧出现变化,也就是数据发生了变化,那么这个时候我们应该怎么样去进行检测

2015-11-24 17:47:02 4537 2

原创 数据链路层—了解数据链路和帧

本文介绍数据链路的定义和帧的理解:1、数据链路:首先大家要明确的是,数据链路和链路是两个不同的概念(1)链路(link):从一个节点到另外一个节点(直接相连)的一段物理线路(包括了有线和无线)(2)数据链路(data link):传输数据不能够仅仅靠物理线路,还应该有具体的协议去控制数据的传输。如果把这些协议的硬件设备和软件设备都添加到链路中的话,就构成了数据链路。现在很常见的是使

2015-11-24 17:19:44 3624 1

原创 数据链路层—简介

本文介绍数据链路层的大概定义:在物理层中,我们只关注单个比特的传输,但是在数据链路层中,我们将要关注怎么去实现两台设备之间的“信息块”通信。设备之间通过通信信道(Communication Channel)连接,通信信道我们可以大致理解为物理上使用的线路(严格说区别为物理信道和逻辑信道)。由于使用信道进行连接,那么信道的作用就仅仅是传递比特数据了。说到这里,好像两台设备之间的传输信息看起来

2015-11-24 14:49:21 712

原创 iOS之Cocoa大招KVC键值编码

在iOS编程中,KVC(Key Value Coding)键值编码被称为Cocoa框架的大招,这是有一定道理的,KVC是底层的操作,它可以做到很多难以实现的操作,同时也可以使得代码变得很简单。本文通过对KVC的各种不同功能来进行说明:新建一个Command Line Tool项目1、KVC可以改变那些私有的属性:新建一个继承于NSObject的类Person,在.m文件中添加一个属性n

2015-10-15 22:34:01 800

原创 iOS之错误总结收集

本文的主要目的是记录收集在学习开发过程中遇到的错误,本文将会伴随着不断地学习过程进行实时更新:1、duplicate symbol _OBJC_METACLASS_$_ 类名 in 原因:(1)在某个文件中包含了.m文件(2)在同一个项目中存在两个以及两个以上的重复文件

2015-10-12 17:42:45 641

原创 iOS中的堆和栈

对于iOS这种移动端的开发,程序员应该合理地管理内存,这样才能让应用更加灵活流畅地运行。在Andriod中,是由垃圾回收机制来处理在堆中的内存空间,而在iOS中,需要程序员手动操作在堆中间的内存空间,并进行内存的分配和释放(ARC之后换做应用帮助程序员进行大部分操作)我们先来看看iOS中一共有哪些存储空间:1、栈区(stack)2、堆区(heap)3、静态区4、寄存器区5、

2015-09-28 11:25:14 1912

原创 iOS中3种基础的数据持久化模式

本文主要对NSUserDefaults、plist(属性列表 property list)、archive(归档)这三种基础的数据持久化进行研究在讨论这三种具体的方法之前,需要了解下iOS中的“沙盒”,也就是数据存储的地方,在iOS中,每个应用的沙盒都是独立的,在没有允许的情况下,不同的应用之间是不能进行信息的交互的。每个应用的“沙盒”这样一些目录:1、Documents:这个目录用于存储

2015-09-22 09:56:42 458

新浪微博APP(个人模仿版)

1、代码质量高,通过了多次重构 2、项目框架结构清晰,无论是修改还是扩展都十分方便

2016-03-07

猿圈APP(个人模仿版)

1、代码都是高质量代码,通过多次重构,注释非常详细 2、项目架构很清晰,无论是修改还是为以后扩展都很不错

2016-03-07

咖啡管理系统(界面优美,功能精简)

1、界面精美,通过了很多小细节去处理界面 2、功能覆盖很紧密和全面,达到一种视觉上的精简效果 3、代码质量较好,有很多注释方便大家去阅读理解 4、压缩包里还有项目分析,问题解决方案,以及实验报告

2016-03-07

iOS应用主流框架搭建

类似于微博、QQ、微信这种建立在UITabBarController之上的应用所采用的框架,本例模仿新浪微博进行了最基本也是最重要的框架搭建

2015-10-04

图片轮流切换显示

使用一个scrollView控件做成的一个图片轮播器,注释很详细

2015-10-02

iOS百度地图实时绘制轨迹(后台仍然执行)

利用百度地图第三方框架来构建工程,实现功能为: 1、实时绘制轨迹 2、高精度 3、切换到后台仍然绘制

2015-09-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除