![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS开发
文章平均质量分 73
iosswift
这个作者很懒,什么都没留下…
展开
-
UITableView——reloadData与reloadSection性能比较
周五上午,测试,有个很奇怪的bug:每次reset模拟器后,第一次进入个人资料界面,首诊记录数据展示不对,第二次进入数据展示都是正确的。这个患者其实有首诊记录,但当时查看代码很久,一直没找到问题所在。无奈,下午只好先查看另一个bug,选择虚拟患者李冰,进入个人资料,闪退。这个bug不是必现的,需要reset模拟器,第一次进入个人资料界面,才会闪退。好在,这个bug有错误日志原创 2015-11-25 19:54:13 · 25838 阅读 · 1 评论 -
线程安全总结(ThreadSafety Summary)
线程安全总结(ThreadSafety Summary)本附录描述OS X和iOS中高级线程安全的一些关键框架。本附录中的信息可能发生变化。CocoaCocoa中多线程使用指南包括以下几点:不可变对象通常是线程安全的。一旦你创建它们,你可以在线程间安全的传递这些对象。另一方面,可变的对象通常是线程不安全的。在线程应用中使用可变对象,应用必须适当的同步。更多信息,参见可变VS不可翻译 2015-03-24 20:23:22 · 3216 阅读 · 0 评论 -
同步(Synchronization)
应用中多线程的存在打开了一个潜在的关于执行多线程安全访问资源问题。两个线程修改相同的资源可能会以意想不到的方式相互妨碍。例如,一个线程可能覆盖另一个线程的更改或让应用进入一个未知潜在无效状态。如果你幸运,毁坏的资源也能导致明显的性能问题或相对容易追踪和修复的崩溃。如果你不幸,然而,毁坏的资源可能导致微妙的错误,一直不显现直到很久以后,或者错误可能需要对底层编码设计进行彻底检查。当涉及到线程安全翻译 2015-03-18 08:04:44 · 2163 阅读 · 0 评论 -
好习惯,让生活更美好!(已在App store上架)
App设计来源:习惯的形成大致分三个阶段。 第一阶段:1~7天左右。此阶段的特征是"刻意,不自然"。你需要十分刻意提醒自己改变,而你也会觉得有些不自然,不舒服。第二阶段:7~21天左右。不要放弃第一阶段的努力,继续重复,跨入第二阶段。此阶段的特征是:"刻意,自然"。你已经觉得比较自然,比较舒服了,但是一不留意,你还会恢复到从前。因此,你还需要刻意提醒自己改变。第三阶段:21原创 2014-11-25 22:22:26 · 1285 阅读 · 0 评论 -
iOS相机编程主题(Camera Programming Topics for iOS)
关于相机和照片库iOS为拍摄照片和影片提供两种技术。UIImagePickerController 类为拍照和拍影片提供基础、可自定义用户界面,给用户新捕获的媒体提供简单的编辑功能。当不需要完全自定义解决方案时,可以使用图像选择控制器。AV 基础框架提供了灵活、强大的类,包括UIKit,可以为应用程序创建完全自定义静态图片或影片捕获。使用其中一个选项,可以使用资源库框架来管理媒体元翻译 2014-12-29 21:28:12 · 2076 阅读 · 0 评论 -
与运行时交互(Interacting with the Runtime)
Objective-C 程序与运行时系统的交互主要在三个不同的层次:通过Objective-C 源代码;通过基础框架中NSObject类中定义的方法;通过直接调用运行时函数。Objective-C 源代码在大多数情况下,运行时系统自动在后台工作。只通过编写和编译Objective-C源代码才会使用到。当编译包含Objective-C类和方法的代码,编译器会创建数据结构和函数调用,实现语翻译 2015-01-03 12:08:40 · 1533 阅读 · 1 评论 -
动态方法解析(Dynamic Method Resolution)
本章描述了如何动态的提供一个方法的实现。动态方法解析在有些情况下,需要动态的提供一个方法的实现。例如,Objective-C 声明的属性特征(见Objective-C 编程语言中的声明属性)包含@dynamic指令:@dynamic propertyName;它告诉编译器,将动态的提供该方法与属性。可以实现resolveInstanceMethod: 和resolveClassMe翻译 2015-01-03 11:48:51 · 3434 阅读 · 0 评论 -
从照片库中选择一个项目(Picking an Item from the Photo Library)
处理使用UIImagePickerController 实例来捕获新图片和影片,还可以用它来呈现媒体浏览,让用户从保存的相册中选择一个项目。采取的步骤类似于捕获媒体,在拍照和拍影片中有描述,两者的区别:不是使用相机作为媒体来源,而是使用相册或保存照片或者整个照片库。不是捕获一个新媒体然后保存到相册,而是让用户选择以前保存的媒体。可以选择应用中的媒体,然后全屏显示。本章解释了如何使用一个翻译 2014-12-28 20:48:54 · 1258 阅读 · 0 评论 -
运行时版本与平台(Runtime Versions and Platforms)
在不同的平台上有不同版本的Objective-C运行时。历史版本与最近版本有两个版本的Objective-C运行时——“最新版本”和“历史版本”。介绍的最新版本是Objective-C 2.0并包含了大量的新功能。在 Objective-C 1运行时引用中介绍了运行时历史版本的编程接口。Objective-C 运行时引用中介绍了运行时最新版本的编程接口。最值得注意的新特性是最新版本翻译 2015-01-03 12:02:16 · 1862 阅读 · 0 评论 -
类型编码(Type Encodings)
为了协助运行时系统,编译器用字符串为每个方法的返回值和参数类型和方法选择器编码。使用的编码方案在其他情况下也很有用,所以它是public 的,可用于@encode() 编译器指令。当给定一个类型参数,返回一个编码类型字符串。类型可以是一个基本类型如int,指针,结构或联合标记,或任何类型的类名,事实上,都可以作为C sizeof() 运算符的参数。char *buf1 = @encode(in翻译 2015-01-03 11:58:36 · 3053 阅读 · 0 评论 -
线程编程指南(Threading Programming Guide)
简介线程是一种技术,可以在一个应用中同时执行多个代码路径。尽管新技术如操作对象和GCD提供一个更现代和更高效的工具来实现并发,OS X 和iOS也提供接口来创建和管理线程。本文揭示了OS X中可用的线程包并展示了如何使用它们。本文还描述了应用程序中支持线程和多线程代码同步的相关技术。重要:如果你正在开发一个新的应用,鼓励你研究实现并发的OS X技术。尤其是你不熟悉实现线程应用所需要的设翻译 2015-01-30 06:36:41 · 1750 阅读 · 1 评论 -
KVC基础(Key-Value Coding Fundamentals)
KVC基础本文描述KVC的基本原则。Key和key路径Key是用来标示对象特定属性的字符串。通常,一个key对应一个访问器方法或接收对象的实例变量。Key必须使用ASCII编码,以小写字母开头,不包含空格。例如key可以为收款人,初始金额,交易和数量。Key路径是是点分割key的字符串,用于指定对象属性遍历序列。第一个key的属性与接收者相关,每个后续关键key与前一个属性的值翻译 2015-11-08 16:45:53 · 796 阅读 · 0 评论 -
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 · 13717 阅读 · 2 评论 -
iOS中引用第三方类库的方法总结
在我们开发iOS应用时,会经常使用到很多第三方开源类库,比如AFNetworking、FMDB等等目前,引用第三方类库的方法有4种。比较推荐方法二和方法三,根据不同的第三方类库选择不同的方法。1.cocoaPods通过cocoaPods引入第三方类库cocoaPods是iOS开发中最常用的类库管理工具,引用类库和更新类库都很方便,只需要一行简单的命令即可,统一管理第三方类库,提高开原创 2015-10-11 18:01:38 · 5297 阅读 · 0 评论 -
实现类似qq扫一扫功能
最近公司项目需要实现一个类似qq扫一扫功能,该功能主要分为三个部分:扫一扫、扫描相册中二维码图片、开灯(我的二维码不是主要功能)1.扫一扫iOS7以后,AVFoundation.framework框架支持扫一扫功能,详细代码,可以参考http://www.jianshu.com/p/6b7d54b3f88b但该博客中的代码只能简单的实现扫一扫功能,周围的背景并不是半透明的。原创 2015-10-11 21:39:52 · 3530 阅读 · 0 评论 -
从工程中删除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 · 2396 阅读 · 0 评论 -
Xcode7新功能
重要:这只是开发中API或技术的一个初步文档。苹果提供这些信息来帮助你在苹果产品上采用这些技术和编程界面。这些信息可能发生变化,根据这个文档实现的软件必须在最终的操作系统软件和最终的文档上测试。本文档的新版本可能用来作为未来API或技术的beta版。Xcode是一个完整的开发工具,用于在苹果手表,ipad,iPhone和Mac创建应用程序。Xcode开发工具包涵分析工具、模拟器以及watchO翻译 2015-10-24 18:20:24 · 1345 阅读 · 0 评论 -
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 · 1082 阅读 · 0 评论 -
KVC编程指南(Key-Value Coding Programming Guide)
概述重要:这只是开发中API或技术的一个初步文档。苹果提供这些信息来帮助你在苹果产品上采用这些技术和编程界面。这些信息可能发生变化,根据这个文档实现的软件必须在最终的操作系统软件和最终的文档上测试。本文档的新版本可能用来作为未来API或技术的beta版。本文档描述了NSKeyValueCoding 非正式协议,它定义了一种机制,运行应用程序访问一个对象的名字(或key),而不是直接通过一个翻译 2015-11-08 16:41:50 · 1655 阅读 · 0 评论 -
什么是KVC?(What Is Key-Value Coding?)
什么是KVC?KVC是一种间接访问对象属性的机制,使用字符串识别属性,而不是通过调用一个访问器方法或直接访问实例变量。在本质上,KVC定义了你的应用实现的访问器方法的模式和方法签名。访问器方法,顾名思义,提供访问你应用程序数据模型的属性值的方法。有两种基本形式的访问器——get访问器和set访问器。Get 访问器,也称为getters,返回一个属性值。Set 访问器,也称为setters,翻译 2015-11-08 16:49:37 · 4093 阅读 · 0 评论 -
术语(Terminology)
术语除了重载现有术语,KVC定义了一些自己独特的术语。KVC可以用于访问三种不同类型对象值:属性,单一关系,多重关系。该术语指任何三种类型。一个attribute 的属性使一个简单的值例如一个标量,字符串或布尔值。值对象例如NSNumber 和其他不可变类型如NSColor 同样也是attribute。属性指定单一关系是指该对象有自己的属性。这些属性可以改变同时对象本身不改变。翻译 2015-11-08 16:47:28 · 904 阅读 · 0 评论 -
声明属性(Declared Properties)
当编译器遇到属性声明时(参见The Objective-C 编程语言中的声明属性),它生成与封闭类、分类或协议相关的描述性元数据。可以通过函数访问元数据,该函数支持通过类或协议名称查找属性,获取属性的类型作为@encode 字符串,并复制property的属性列表作为C字符串数组。声明的属性列表可用于每个类和协议。属性类型和函数属性结构为属性描述符定义了一个不透明句柄。typedef翻译 2015-01-03 11:41:08 · 2182 阅读 · 0 评论 -
运行循环(Run Loops)
运行循环是与线程相关的基础工具的一部分。运行循环是一个用来安排工作并协调传入事件接收的一个事件处理循环。运行循环的目的是当需要工作的时候,让你的线程处于忙碌状态;当没有工作时,让你的线程处于睡眠状态。运行循环管理并不是完全自动运行,你必须设计线程代码在适当的时间启动运行循环并响应传入的事件。Cocoa和核心基础提供运行循环对象来帮助你配置和管理你的线程运行循环。你的引用不需要显式的创建这些对象翻译 2015-02-25 19:23:54 · 1954 阅读 · 0 评论 -
CFNetwork编程指南(CFNetwork Programming Guide)
CFNetwork编程指南简介CFNetwork是核心服务框架中的一个框架,提供了抽象概念的网络协议库。这些抽象感念使得执行各种网络任务变得更容易,例如:使用BSD套接字使用SSL或TLS创建加密连接解析DNS主机使用HTTP,验证HTTP和HTTP服务器使用FTP服务器发布、解析和浏览Bonjour 服务(NSNetServices和CFNetServices编程指南中有讨论)。翻译 2015-01-20 21:25:23 · 2486 阅读 · 0 评论 -
与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 · 1636 阅读 · 0 评论 -
Objective-C运行时编程指南(Objective-C Runtime Programming Guide)
简介Objective-C语言进可能将许多决策从编译和链接延缓到运行时。它尽可能的动态处理事务。这意味着Objective-C不仅需要编译器还需要执行编译代码的运行时系统。运行时系统充当Objective-C的一种操作系统,使之正常工作。本文着眼于NSObject 类以及Objective-C 程序如何与运行时系统交互。特别是,在运行时动态的加载新类,并将消息转发给其他对象。它还提供了如何翻译 2014-12-29 21:29:31 · 6336 阅读 · 2 评论 -
与身份验证HTTP服务器通信(Communicating with Authenticating HTTP Servers)
本文描述了如何利用CFHTTPAuthentication API与需要身份验证的HTTP服务器通信。它解释了如何找到匹配的验证对象和证书,并将它们应用到HTTP请求,然后存储以供以后使用。一般来说,如果一个HTTP服务器返回一个401或407响应你的HTTP请求,这表明服务器进行身份验证需要证书。在CFHTTPAuthentication API中,每个证书组存储在CFHTTPAuthent翻译 2015-01-27 22:20:41 · 2502 阅读 · 0 评论 -
使用流(Working with Streams)
本文讨论如何创建、打开和检查读写流错误。它还描述了如何从读取流读取信息,如何从写入信息到写入流,如何在读取或写入流时防止阻塞以及如何通过代理服务器导航到流。使用读取流核心基础流可用于读取或写入文件或使用网络套接字。除了创建这些流过程中的异常,其他行为类似。创建一个读取流首先创建一个读取流。清单2-1为一个文件创建读取流。清单2-1 为一个文件创建读取流CFReadStr翻译 2015-01-27 23:23:32 · 1903 阅读 · 0 评论 -
CFNetwork概念(CFNetwork Concepts )
CFNetwork是一个低级别高性能的框架,使你能够精细的控制协议栈。它是BSD套接字的扩展,标准套接字抽象API提供对象来简化任务,例如与FTP和HTTP服务器或解析DNS主机。CFNetwork物理上和理论上都基于BSD套接字。正如CFNetwork依赖与BSD套接字,有大量的Cocoa类依赖CFNetwork(例如,NSURL)。此外,Cocoa类的web工具包用来在窗口显示网页内容。这翻译 2015-01-26 20:46:51 · 3916 阅读 · 1 评论 -
消息传递(Messaging)
本章描述了如何将消息表达式转换成objc_msgSend函数调用,以及如何通过名字引用方法。然后解释如何利用objc_msgSend以及如何避免动态绑定objc_msgSend函数在Objective-C中,直到运行时,消息才会绑定到方法的实现。编译器才会转换消息表达式,[receiver message]调用消息传递行数objc_msgSend。这个函数需要接收者和消息中提到翻译 2015-01-06 21:06:48 · 2398 阅读 · 0 评论 -
消息转发(Message Forwarding)
发送消息到不处理该消息的对象会发生错误。然而,在声明错误之前,运行时系统给接收对象第二次机会处理该消息。转发如果发送消息到不处理该消息的对象,在声明错误之前,运行时给该对象发送forwardInvocation: 消息,NSInvocation 对象作为唯一参数。NSInvocation 对象封装原始消息和需要传递的参数。可以实现 forwardInvocation:方法,提供一个默认翻译 2015-01-06 22:12:04 · 3270 阅读 · 2 评论 -
iOS开发快速入门教程——3.1节~3.5节
OC主要负责UI界面,C语言、C++可用于图形处理,Ruby、C#也可以开发iOS应用语法预览:1.没有包名(命名空间)的概念OC是通过给类名加前缀,防止类名冲突2.关键字以@开头基本数据类型:char、int、float、double、BOOL(YES原创 2014-12-15 21:47:11 · 475 阅读 · 0 评论 -
iOS开发快速入门教程——3.11节~3.16节
内存管理:@class关键字继承某个类,用#import,包含被引用类的变量和方法,效率低只是定义成员变量、属性,用@class,效率高需要用到变量和方法,可以在.m文件中用#import 循环引用,用@class,用#import报错当文件大量#import同一个文件,当这个文件改变,所有引用这个文件的类都要重新编译 内存管理:@property参数详解参数主原创 2014-12-15 22:40:53 · 442 阅读 · 0 评论 -
iOS开发快速入门教程——3.6节~3.10节
self、自动释放、变量作用域变量的作用域@public全局都可以访问@protected只能在类内部和子类中访问,默认@private只能在类内部访问静态方法创建的对象会自动释放变量必须定义在类的{ }中谁调用方法,self就指向谁如果直接把方法写在.m文件中,没有在.h文件中进行声明,则这个方法就是私有方法 OC语法简单复习、new关键字New:相当于a原创 2014-12-15 22:01:19 · 530 阅读 · 0 评论 -
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 · 525 阅读 · 0 评论 -
使用FTP服务器(Working with FTP Servers)
本文揭示了如何使用CFFTP API的一些基本特性。管理FTP事务是异步执行的,而管理文件传输是同步实现的。下载文件使用CFFTP类似于CFHTTP 因为它们都是基于CFStream。与其他任何异步使用CFStream的API,使用CFFTP下载一个文件要求你为文件创建一个读取流和一个回调函数。当读取流接收数据时,回调函数将运行,你需要适当的下载字节。这个过程通常执行两个函数:一个用来设置翻译 2015-01-28 23:07:22 · 1717 阅读 · 0 评论 -
使用网络诊断(Using Network Diagnostics)
在许多基于网络的应用中,会发生基于网络的错误,这些错误与你的应用无关。然而,大多数用户可能不知道为什么应用失败。CFNetDiagnostics API为你提供一种快速而简单的方法来帮助用户解决网络问题。如果你的应用使用一个CFStream 对象,然后调用CFNetDiagnosticCreateWithStreams函数创建一个网络诊断引用(CFNetDiagnosticRef) 。CFNe翻译 2015-01-29 07:11:48 · 5204 阅读 · 0 评论 -
线程管理(Thread Management)
OS X或iOS每个进程(应用)是由一个或多个线程组成,每个线程代表通过应用代码执行的一个路径。每个应用从一个线程开始,用来运行应用的main函数。应用可以产生额外的线程,每个线程执行特定功能的代码。当应用生成一个新线程时,该线程成为应用进程空间内的独立实体。每个线程都有自己的执行堆栈并且由内核独立安排运行时。一个线程可以与其他线程和其他进程通信,执行 I/O 操作,和其他任何你需要做的。翻译 2015-01-29 20:32:08 · 3885 阅读 · 0 评论 -
Cagegory简介(Category)
使用类别而不通过子类的方法,为已经存在的类定义额外的方法,即使这个类的源代码对你不可用。通常使用类别将方法添加到已经存在的类中,例如,在Cocoa框架中定义的类。添加的方法被子类继承,在运行时无法与原始类方法区分开。在自定义的类中也可以使用类别。1.分散类的实现到单独的源文件中,例如,可以将一个有很多类的方法分成几个类别,并将每个类别放在不同的文件中。2.声明私有方法给一个类添加方法翻译 2014-12-15 11:26:32 · 1073 阅读 · 0 评论 -
Block的使用(Working with Blocks)
一个Objective-C定义了一个对象,这个对象可以将数据与相关行为结合。有时,它仅仅代表一个任务或行为单元,而不是方法的集合。Block是添加到C、 Objective-C 和C++的语言级特性,允许创建不同的代码段传递到方法或函数中,就像传值一样传递。Block是Objective-C对象,可以添加到类似NSArray 或NSDictionary的集合中。它们可以获取作用域的值,使之类似翻译 2014-12-24 21:48:21 · 1178 阅读 · 0 评论