自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小言的专栏

种树最好的时间是十年前,其次是现在。只要想学,永远都不会晚。

  • 博客(53)
  • 收藏
  • 关注

原创 UITableView——reloadData与reloadSection性能比较

周五上午,测试,有个很奇怪的bug:每次reset模拟器后,第一次进入个人资料界面,首诊记录数据展示不对,第二次进入数据展示都是正确的。这个患者其实有首诊记录,但当时查看代码很久,一直没找到问题所在。无奈,下午只好先查看另一个bug,选择虚拟患者李冰,进入个人资料,闪退。这个bug不是必现的,需要reset模拟器,第一次进入个人资料界面,才会闪退。好在,这个bug有错误日志

2015-11-25 19:54:13 25866 1

翻译 什么是KVC?(What Is Key-Value Coding?)

什么是KVC?KVC是一种间接访问对象属性的机制,使用字符串识别属性,而不是通过调用一个访问器方法或直接访问实例变量。在本质上,KVC定义了你的应用实现的访问器方法的模式和方法签名。访问器方法,顾名思义,提供访问你应用程序数据模型的属性值的方法。有两种基本形式的访问器——get访问器和set访问器。Get 访问器,也称为getters,返回一个属性值。Set 访问器,也称为setters,

2015-11-08 16:49:37 4202

翻译 术语(Terminology)

术语除了重载现有术语,KVC定义了一些自己独特的术语。KVC可以用于访问三种不同类型对象值:属性,单一关系,多重关系。该术语指任何三种类型。一个attribute  的属性使一个简单的值例如一个标量,字符串或布尔值。值对象例如NSNumber 和其他不可变类型如NSColor  同样也是attribute。属性指定单一关系是指该对象有自己的属性。这些属性可以改变同时对象本身不改变。

2015-11-08 16:47:28 933

翻译 KVC基础(Key-Value Coding Fundamentals)

KVC基础本文描述KVC的基本原则。Key和key路径Key是用来标示对象特定属性的字符串。通常,一个key对应一个访问器方法或接收对象的实例变量。Key必须使用ASCII编码,以小写字母开头,不包含空格。例如key可以为收款人,初始金额,交易和数量。Key路径是是点分割key的字符串,用于指定对象属性遍历序列。第一个key的属性与接收者相关,每个后续关键key与前一个属性的值

2015-11-08 16:45:53 814

翻译 KVC编程指南(Key-Value Coding Programming Guide)

概述重要:这只是开发中API或技术的一个初步文档。苹果提供这些信息来帮助你在苹果产品上采用这些技术和编程界面。这些信息可能发生变化,根据这个文档实现的软件必须在最终的操作系统软件和最终的文档上测试。本文档的新版本可能用来作为未来API或技术的beta版。本文档描述了NSKeyValueCoding 非正式协议,它定义了一种机制,运行应用程序访问一个对象的名字(或key),而不是直接通过一个

2015-11-08 16:41:50 1668

翻译 Xcode7新功能

重要:这只是开发中API或技术的一个初步文档。苹果提供这些信息来帮助你在苹果产品上采用这些技术和编程界面。这些信息可能发生变化,根据这个文档实现的软件必须在最终的操作系统软件和最终的文档上测试。本文档的新版本可能用来作为未来API或技术的beta版。Xcode是一个完整的开发工具,用于在苹果手表,ipad,iPhone和Mac创建应用程序。Xcode开发工具包涵分析工具、模拟器以及watchO

2015-10-24 18:20:24 1363

翻译 iOS9.0 新功能

本文总结了iOS9中与开发者相关的关键特性,目前销售的iOS设备上运行着这些功能。本文还列出了一些文档,在这些文档中更加详细的描述了新功能。关于已知问题的最新新闻和信息,参见iOS 9 版本说明( iOS 9 Release Notes)。iOS 9 中新增加的API列表,参见iOS 9.0 API差异( iOS 9.0 API Diffs)。关于新设备的更多信息,参见iOS设备兼容性参考(

2015-10-18 09:14:01 2779

原创 实现类似qq扫一扫功能

最近公司项目需要实现一个类似qq扫一扫功能,该功能主要分为三个部分:扫一扫、扫描相册中二维码图片、开灯(我的二维码不是主要功能)1.扫一扫iOS7以后,AVFoundation.framework框架支持扫一扫功能,详细代码,可以参考http://www.jianshu.com/p/6b7d54b3f88b但该博客中的代码只能简单的实现扫一扫功能,周围的背景并不是半透明的。

2015-10-11 21:39:52 3545

原创 从工程中删除Cocoapods

公司项目中要移除cocoaPods,按照http://blog.csdn.net/freedom2028/article/details/10244819中的四个步骤1. 删除工程文件夹下的Podfile、Podfile.lock及Pods文件夹2. 删除xcworkspace文件3. 使用xcodeproj文件打开工程,删除Frameworks组下的Pods.xcconfig及lib

2015-10-11 18:29:42 2409

原创 iOS中引用第三方类库的方法总结

在我们开发iOS应用时,会经常使用到很多第三方开源类库,比如AFNetworking、FMDB等等目前,引用第三方类库的方法有4种。比较推荐方法二和方法三,根据不同的第三方类库选择不同的方法。1.cocoaPods通过cocoaPods引入第三方类库cocoaPods是iOS开发中最常用的类库管理工具,引用类库和更新类库都很方便,只需要一行简单的命令即可,统一管理第三方类库,提高开

2015-10-11 18:01:38 5329

原创 Appium——iOS自动化测试

Appium下载与安装关于Appium:详细介绍见Appium官方网站:http://appium.io安装步骤:安装node.js&npm安装Appium安装Selenium WebDriver网上有很多关于Appium安装的教程,这里就不再详述。http://www.cnblogs.com/enjoytesting/p/3513637.html检

2015-09-27 16:26:50 13740 2

翻译 线程安全总结(ThreadSafety Summary)

线程安全总结(ThreadSafety Summary)本附录描述OS X和iOS中高级线程安全的一些关键框架。本附录中的信息可能发生变化。CocoaCocoa中多线程使用指南包括以下几点:不可变对象通常是线程安全的。一旦你创建它们,你可以在线程间安全的传递这些对象。另一方面,可变的对象通常是线程不安全的。在线程应用中使用可变对象,应用必须适当的同步。更多信息,参见可变VS不可

2015-03-24 20:23:22 3241

翻译 同步(Synchronization)

应用中多线程的存在打开了一个潜在的关于执行多线程安全访问资源问题。两个线程修改相同的资源可能会以意想不到的方式相互妨碍。例如,一个线程可能覆盖另一个线程的更改或让应用进入一个未知潜在无效状态。如果你幸运,毁坏的资源也能导致明显的性能问题或相对容易追踪和修复的崩溃。如果你不幸,然而,毁坏的资源可能导致微妙的错误,一直不显现直到很久以后,或者错误可能需要对底层编码设计进行彻底检查。当涉及到线程安全

2015-03-18 08:04:44 2183

翻译 运行循环(Run Loops)

运行循环是与线程相关的基础工具的一部分。运行循环是一个用来安排工作并协调传入事件接收的一个事件处理循环。运行循环的目的是当需要工作的时候,让你的线程处于忙碌状态;当没有工作时,让你的线程处于睡眠状态。运行循环管理并不是完全自动运行,你必须设计线程代码在适当的时间启动运行循环并响应传入的事件。Cocoa和核心基础提供运行循环对象来帮助你配置和管理你的线程运行循环。你的引用不需要显式的创建这些对象

2015-02-25 19:23:54 1983

翻译 关于线程编程(About Threaded Programming)

多年来,大部分电脑性能主要受到位于电脑中心的单个微处理器的速度限制。由于单个处理器的速度开始达到他们实际限制,然而,芯片制造商转向多核设计,使计算机可以同时执行多个任务。尽管OS X利用这些核心可以随时执行系统相关任务,你自己的应用也可以通过线程利用他们。什么是线程?线程是一个相对轻量级的方法在应用内部实现多路径执行。在系统层面上,程序一起运行,系统为每个程序发放执行时间,根据每个项目的需

2015-01-31 21:21:07 1244

翻译 线程编程指南(Threading Programming Guide)

简介线程是一种技术,可以在一个应用中同时执行多个代码路径。尽管新技术如操作对象和GCD提供一个更现代和更高效的工具来实现并发,OS X 和iOS也提供接口来创建和管理线程。本文揭示了OS X中可用的线程包并展示了如何使用它们。本文还描述了应用程序中支持线程和多线程代码同步的相关技术。重要:如果你正在开发一个新的应用,鼓励你研究实现并发的OS X技术。尤其是你不熟悉实现线程应用所需要的设

2015-01-30 06:36:41 1767 1

翻译 线程管理(Thread Management)

OS X或iOS每个进程(应用)是由一个或多个线程组成,每个线程代表通过应用代码执行的一个路径。每个应用从一个线程开始,用来运行应用的main函数。应用可以产生额外的线程,每个线程执行特定功能的代码。当应用生成一个新线程时,该线程成为应用进程空间内的独立实体。每个线程都有自己的执行堆栈并且由内核独立安排运行时。一个线程可以与其他线程和其他进程通信,执行 I/O 操作,和其他任何你需要做的。

2015-01-29 20:32:08 3926

翻译 使用网络诊断(Using Network Diagnostics)

在许多基于网络的应用中,会发生基于网络的错误,这些错误与你的应用无关。然而,大多数用户可能不知道为什么应用失败。CFNetDiagnostics API为你提供一种快速而简单的方法来帮助用户解决网络问题。如果你的应用使用一个CFStream 对象,然后调用CFNetDiagnosticCreateWithStreams函数创建一个网络诊断引用(CFNetDiagnosticRef) 。CFNe

2015-01-29 07:11:48 5237

翻译 使用FTP服务器(Working with FTP Servers)

本文揭示了如何使用CFFTP API的一些基本特性。管理FTP事务是异步执行的,而管理文件传输是同步实现的。下载文件使用CFFTP类似于CFHTTP 因为它们都是基于CFStream。与其他任何异步使用CFStream的API,使用CFFTP下载一个文件要求你为文件创建一个读取流和一个回调函数。当读取流接收数据时,回调函数将运行,你需要适当的下载字节。这个过程通常执行两个函数:一个用来设置

2015-01-28 23:07:22 1744

翻译 使用流(Working with Streams)

本文讨论如何创建、打开和检查读写流错误。它还描述了如何从读取流读取信息,如何从写入信息到写入流,如何在读取或写入流时防止阻塞以及如何通过代理服务器导航到流。使用读取流核心基础流可用于读取或写入文件或使用网络套接字。除了创建这些流过程中的异常,其他行为类似。创建一个读取流首先创建一个读取流。清单2-1为一个文件创建读取流。清单2-1 为一个文件创建读取流CFReadStr

2015-01-27 23:23:32 1916

翻译 与身份验证HTTP服务器通信(Communicating with Authenticating HTTP Servers)

本文描述了如何利用CFHTTPAuthentication API与需要身份验证的HTTP服务器通信。它解释了如何找到匹配的验证对象和证书,并将它们应用到HTTP请求,然后存储以供以后使用。一般来说,如果一个HTTP服务器返回一个401或407响应你的HTTP请求,这表明服务器进行身份验证需要证书。在CFHTTPAuthentication API中,每个证书组存储在CFHTTPAuthent

2015-01-27 22:20:41 2522

翻译 与HTTP服务器通信(Communicating with HTTP Servers)

本文解释了如何创建、发送和接收HTTP请求和响应。创建一个CFHTTP请求HTTP请求是一个消息,这个消息由远程服务器执行的方法,操作的对象(URL),消息头和消息体。方法通常是下面之一:GET, HEAD, PUT, POST, DELETE, TRACE, CONNECT 或OPTIONS。用CFHTTP创建一个HTTP请求分为四个步骤:使用CFHTTPMessageCre

2015-01-26 20:49:54 1654

翻译 CFNetwork概念(CFNetwork Concepts )

CFNetwork是一个低级别高性能的框架,使你能够精细的控制协议栈。它是BSD套接字的扩展,标准套接字抽象API提供对象来简化任务,例如与FTP和HTTP服务器或解析DNS主机。CFNetwork物理上和理论上都基于BSD套接字。正如CFNetwork依赖与BSD套接字,有大量的Cocoa类依赖CFNetwork(例如,NSURL)。此外,Cocoa类的web工具包用来在窗口显示网页内容。这

2015-01-26 20:46:51 3939 1

翻译 CFNetwork编程指南(CFNetwork Programming Guide)

CFNetwork编程指南简介CFNetwork是核心服务框架中的一个框架,提供了抽象概念的网络协议库。这些抽象感念使得执行各种网络任务变得更容易,例如:使用BSD套接字使用SSL或TLS创建加密连接解析DNS主机使用HTTP,验证HTTP和HTTP服务器使用FTP服务器发布、解析和浏览Bonjour 服务(NSNetServices和CFNetServices编程指南中有讨论)。

2015-01-20 21:25:23 2511

翻译 Xcode6 新功能(What’s New in Xcode)

Xcode是用于创建iPad,iPhone和Mac应用的完整开发人员工具。Xcode开发环境包含工具分析工具,iOS模拟器和iOS SDK和OS X SDK形式的OS框架。Xcode 6.1.1 更新Xcode 6.1.1 维护更新包括bug修复和性能改进。关于Xcode 6.1.1版本更新的更多细节,请参阅Xcode版本说明(Xcode Release Notes)。Xcode

2015-01-19 21:45:39 1104

翻译 iOS调试(iOS Debugging Magic)

iOS包含许多“秘密”调试工具,包括环境变量、偏好、GCB的常规调用,等等。本技术说明描述了这些工具。如果你开发iOS,你应该通过这个列表查看你错过的可以使你更轻松的工具。简介所有苹果系统包括苹果工程团队添加的调试工具都是用来帮助开发和调试特定子系统。这些工具属于已发布系统软件,可以使用它们来调试代码。本技术手册描述一些广泛使用的工具。调试工具记录在另一个地方,有个简短的工具概述并链接到现

2015-01-19 21:04:07 2546

翻译 消息转发(Message Forwarding)

发送消息到不处理该消息的对象会发生错误。然而,在声明错误之前,运行时系统给接收对象第二次机会处理该消息。转发如果发送消息到不处理该消息的对象,在声明错误之前,运行时给该对象发送forwardInvocation: 消息,NSInvocation 对象作为唯一参数。NSInvocation 对象封装原始消息和需要传递的参数。可以实现 forwardInvocation:方法,提供一个默认

2015-01-06 22:12:04 3298 2

翻译 消息传递(Messaging)

本章描述了如何将消息表达式转换成objc_msgSend函数调用,以及如何通过名字引用方法。然后解释如何利用objc_msgSend以及如何避免动态绑定objc_msgSend函数在Objective-C中,直到运行时,消息才会绑定到方法的实现。编译器才会转换消息表达式,[receiver message]调用消息传递行数objc_msgSend。这个函数需要接收者和消息中提到

2015-01-06 21:06:48 2432

翻译 与运行时交互(Interacting with the Runtime)

Objective-C 程序与运行时系统的交互主要在三个不同的层次:通过Objective-C 源代码;通过基础框架中NSObject类中定义的方法;通过直接调用运行时函数。Objective-C 源代码在大多数情况下,运行时系统自动在后台工作。只通过编写和编译Objective-C源代码才会使用到。当编译包含Objective-C类和方法的代码,编译器会创建数据结构和函数调用,实现语

2015-01-03 12:08:40 1570 1

翻译 运行时版本与平台(Runtime Versions and Platforms)

在不同的平台上有不同版本的Objective-C运行时。历史版本与最近版本有两个版本的Objective-C运行时——“最新版本”和“历史版本”。介绍的最新版本是Objective-C 2.0并包含了大量的新功能。在 Objective-C 1运行时引用中介绍了运行时历史版本的编程接口。Objective-C 运行时引用中介绍了运行时最新版本的编程接口。最值得注意的新特性是最新版本

2015-01-03 12:02:16 1889

翻译 类型编码(Type Encodings)

为了协助运行时系统,编译器用字符串为每个方法的返回值和参数类型和方法选择器编码。使用的编码方案在其他情况下也很有用,所以它是public 的,可用于@encode() 编译器指令。当给定一个类型参数,返回一个编码类型字符串。类型可以是一个基本类型如int,指针,结构或联合标记,或任何类型的类名,事实上,都可以作为C sizeof() 运算符的参数。char *buf1 = @encode(in

2015-01-03 11:58:36 3095

翻译 动态方法解析(Dynamic Method Resolution)

本章描述了如何动态的提供一个方法的实现。动态方法解析在有些情况下,需要动态的提供一个方法的实现。例如,Objective-C 声明的属性特征(见Objective-C 编程语言中的声明属性)包含@dynamic指令:@dynamic propertyName;它告诉编译器,将动态的提供该方法与属性。可以实现resolveInstanceMethod: 和resolveClassMe

2015-01-03 11:48:51 3470

翻译 声明属性(Declared Properties)

当编译器遇到属性声明时(参见The Objective-C 编程语言中的声明属性),它生成与封闭类、分类或协议相关的描述性元数据。可以通过函数访问元数据,该函数支持通过类或协议名称查找属性,获取属性的类型作为@encode 字符串,并复制property的属性列表作为C字符串数组。声明的属性列表可用于每个类和协议。属性类型和函数属性结构为属性描述符定义了一个不透明句柄。typedef

2015-01-03 11:41:08 2221

翻译 Objective-C运行时编程指南(Objective-C Runtime Programming Guide)

简介Objective-C语言进可能将许多决策从编译和链接延缓到运行时。它尽可能的动态处理事务。这意味着Objective-C不仅需要编译器还需要执行编译代码的运行时系统。运行时系统充当Objective-C的一种操作系统,使之正常工作。本文着眼于NSObject 类以及Objective-C 程序如何与运行时系统交互。特别是,在运行时动态的加载新类,并将消息转发给其他对象。它还提供了如何

2014-12-29 21:29:31 6364 2

翻译 iOS相机编程主题(Camera Programming Topics for iOS)

关于相机和照片库iOS为拍摄照片和影片提供两种技术。UIImagePickerController 类为拍照和拍影片提供基础、可自定义用户界面,给用户新捕获的媒体提供简单的编辑功能。当不需要完全自定义解决方案时,可以使用图像选择控制器。AV 基础框架提供了灵活、强大的类,包括UIKit,可以为应用程序创建完全自定义静态图片或影片捕获。使用其中一个选项,可以使用资源库框架来管理媒体元

2014-12-29 21:28:12 2086

翻译 从照片库中选择一个项目(Picking an Item from the Photo Library)

处理使用UIImagePickerController 实例来捕获新图片和影片,还可以用它来呈现媒体浏览,让用户从保存的相册中选择一个项目。采取的步骤类似于捕获媒体,在拍照和拍影片中有描述,两者的区别:不是使用相机作为媒体来源,而是使用相册或保存照片或者整个照片库。不是捕获一个新媒体然后保存到相册,而是让用户选择以前保存的媒体。可以选择应用中的媒体,然后全屏显示。本章解释了如何使用一个

2014-12-28 20:48:54 1270

翻译 拍照片和拍影片(Taking Pictures and Movies)

使用图像选择控制器来拍一张照片或一段影片,包含三个部分的处理,代码、系统以及两者之间的交互:实例化并实现相机界面,这个接口是UIImagePickerController 类的实例。系统管理相机几口和用户的交互。在典型的使用中,用户要么拍照片或影片,或者取消操作。系统调用图像选择控制器委托对象方法,进而处理用户交互。例如,保存一张新照片到相册中。这个委托也负责摒除相机界面默认的图像选择

2014-12-28 20:39:38 837

翻译 Block的使用(Working with Blocks)

一个Objective-C定义了一个对象,这个对象可以将数据与相关行为结合。有时,它仅仅代表一个任务或行为单元,而不是方法的集合。Block是添加到C、 Objective-C 和C++的语言级特性,允许创建不同的代码段传递到方法或函数中,就像传值一样传递。Block是Objective-C对象,可以添加到类似NSArray 或NSDictionary的集合中。它们可以获取作用域的值,使之类似

2014-12-24 21:48:21 1194

翻译 协议的使用(Working with Protocols)

在现实世界中,在处理某些情况时,人们往往需要遵守严格的程序。例如,执法官员在进行查询或收集证据时,要求“遵守协议”。在面向对象编程的世界中,在给定的情况下,能够定义一组对象的行为是非常重要的。例如,为了弄清要显示什么,表视图能与数据源对象通信。这意味着数据源必须对表视图发送的消息进行响应。数据源可以是任何类的实例,例如视图控制器(OS X 中NSViewController 的之类或iOS

2014-12-22 20:58:47 1283

原创 iOS开发快速入门教程——5.1节~5.3节

iOS开发概述iOS开发的准备:1.Object-C2.Xcode3.Mac OS X4.调试设备5.开发者证书iOS系统架构:1.核心操作系统层(Core OS):包括内存管理、文件系统、电源管理以及一些其他操作系统任务,可以直接和硬件设备进行交互2.核心服务层(Core Services):3.媒体层(Media)4.可触摸层(Cocoa Touch

2014-12-18 21:44:34 548

空空如也

空空如也

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

TA关注的人

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