- 博客(43)
- 收藏
- 关注
翻译 1.2.5 分配和使用 Sets
你需要存储一组对象但是每个对象只存一次(剔除重复的数据)。 用集合(sets)来代替数组。. Sets 和 array非常相似。二者最大的区别就是 sets中相同对象只能被添加一次。当你第二次添加同一个对象时,sets会拒绝添加。 我们使用 NSSet类表示不可改变的 sets,
2013-11-18 13:03:25
356
翻译 1.2.4 分配和使用字典
你想把键值数据存储到一个对象中,或者你需要根据数组中的 key检索出对应的对象,不过数组满足不了这个需求,因为不容易在数组中使用一个 key 来查找对象。 一个 dictionary是一个特殊的容器,其中的每个项都包含一个 key.这是 dictionary和array最主要不同的地方之一。array的每一项(对象)都有一个数字的索引,然而 di
2013-11-18 12:57:54
277
翻译 1.23 ios中如何分配、使用数组(排序)
一个 NSArray或者其子类的对象可以存储 n个其他类型的对象。这些对象可以通过索引访问。例如,假设我们有 10 双袜子,我们刚所有的袜子从左到右放到一个平台上。我们一次叫它们:袜子1,袜子2,袜子3 等等。所以最左边的袜子叫做袜子 1,挨着它的叫做袜子2,以此类推。这样是不是比说“我红色袜子旁边的蓝色袜子”要简单的多?这就是数组做的事,它能使操作多个条目更加容易
2013-11-16 19:40:47
582
翻译 1.22 ios中使用整型或封装好的数字
正如我们用 NSString对象来存储字符串,我们可以用 NSNumber对象来存储数字。你可能会问为什么?答案很简单:允许一个对象存储数字的值可以让我们方便的把数字存到磁盘,从磁盘取出。还能用一个简单的对象存储有符号、无符号以及浮点数,不要定义和转换各种不同类型的变量。变量的类型是无穷尽的。 让我们来看看 NSNumber对象的构造函数:
2013-11-16 18:33:09
670
翻译 1.21 ios中检查类是否在运行期间可用
解决办法使用 NSClassFronString函数。传入类的名称字符串符。若是返回值为空(nil),则表示这个类无法在这台设备上使用;反之,这个类则可在这台设备上使用。参照下面范例代码: if (NSClassFromString(@"NSJSONSerialization") != nil){/* You can u
2013-11-16 18:28:34
358
翻译 1.20 检查sdk的类方法或实例是否可用
开发过程中遇到的问题:你在最新版的 SDK上进行开发,但是你希望对运行旧版本的设备也支持。 解决办法:使用 NSObject的 instancesRespondToSelector:类方法检测指定的selector是否存在类实例中。要确认一个类是否响应本身的类方法,需使用respondsToSelector:类方法。你可以使用同样方式检测,在一个实例的实例方
2013-11-16 18:17:33
446
转载 Core Foundation 框架
Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:群体数据类型 (数组、集合等)程序包字符串管理日期和时间管理原始数据块管理偏好管理URL及数据流操作
2013-11-16 16:49:14
397
原创 存储属性: strong,weak,unsafe 与 unretained
strong声明为 Strong类型的对象会在执行时期自动保留且在生命周期结束前都是有效的,并在结束后会自动释放。这个关键字就像是 Objective-C传统内存管理方法中的 retain。weak这是弱引用。若变量声明了这个关键字,当对象的变量指针被释放时,将会设为 nil。举例来说,假如你有两个字符串符属性,分别设为strong 引用和 weak引用
2013-11-16 16:00:00
626
转载 IOS中属性:atomic与nonatomic,assign,copy与retain的定义和区别
atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。 atomic 设置成员变量的@property属性时,默认为atomic,提供多线程安全。 在多线程环境下,原子操作是必要的,否则有可能引起错误的结果。加了atomic,setter函数会变成下
2013-11-16 15:17:58
468
原创 iOS常用宏
//常用的IOS开发宏 #pragma mark - 界面 部分 #define NavigationBar_HEIGHT 44 //导航控制器 #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width) //屏幕宽度 #define SCREEN_HEIGHT ([UIScreen mainScreen].bou
2013-11-12 09:20:53
348
转载 ios 沙盒- 获取Documents,app目录
一:获取documents目录路径//1,获取家目录路径的函数:NSString *homeDir = NSHomeDirectory(); //2,获取Documents目录路径的方法:a:NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMas
2013-11-08 00:23:05
498
转载 iOS CoreAnimation
核心动画,开发人员可以为他们的应用创建动态用户界面,而无需使用低级别的图形 API,如 OpenGL 来获取高效的动画性能。 前言,核心动画的好处1.简单易用的高性能混合编程模型。2.类似视图一样,你可以通过使用图层来创建复杂的接口。 通过是CALayer来使用更复杂的一些动画。 3.轻量级的数据结构,它可以同时显示并让上百个图层产生动画效果。 控制
2013-10-28 22:15:22
324
转载 几种常用的排序算法
1 快速排序介绍: 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需
2013-10-28 22:09:09
289
转载 iOS ASIHTTPRequest详解
ASIHTTPRequest对CFNetwork API进行了封装,并且使用起来非常简单,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互。ASIHTTPRequest功能很强大,主要特色如下:l 通过简单的接口,即可完成向服务端提交数据和从服务端获取
2013-10-28 22:07:43
417
原创 iOS 声明属性关键字讲解
atomic原子操作(原子性是指事务的一个完整操作,操作成功就提交,反之就回滚. 原子操作就是指具有原子性的操作)在objective-c 属性设置里面默认的就是atomic,意思就是setter/getter函数是一个原子操作,如果多线程同时调用setter时,不会出现某一个线程执行完setter所有语句之前,另一个线程就开始执行setter,相当于函数头尾加了锁. 这样的话并发访问性能会比
2013-10-21 20:36:21
423
原创 alloc和new的区别
“显示调用总比隐式调用要好”。new和alloc/init在功能上几乎是一致的,分配内存并完成初始化。差别在于,采用new的方式只能采用默认的init方法完成初始化,采用alloc的方式可以用其他定制的初始化方法。
2013-10-21 20:18:30
377
转载 IOS开发之Core Location
IOS 支持三种检测当前位置的方式:手机基站、Wi-Fi、和GPS,其中GPS是经度最高的,同时也是最耗费手机电量的。一般情况下在室内是无法通过GPS获 取位置信息的,通过Wi-Fi获取位置的原理是通过网络提供商的IP地址信息来获取位置,经度不是很高,最后是通过手机基站获取位置,手机开机后会连接附 近的基站塔获取信号,通过基站可以得到手机所在的位置信息,基站越密集,所获取的位置信息经度就越高。
2013-10-20 19:12:29
377
转载 IOS后台执行详解
很不错的一篇介绍iOS后台长时间执行的文章,推荐给大家。----------------------------------------------------------------------------在iOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态。在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除。应用程序提供特定的服务,
2013-10-20 19:07:16
307
转载 IOS后台播放音乐
iOS4之后就支持后台播放音频了。只需下面两步就可以实现后台播放音频操作了:1、在Info.plist中,添加"Required background modes"键,其值设置如下图所示:2、添加AVFoundation框架,然后再添加如下两段代码添加后台播放代码:[cpp] view plaincopy/
2013-10-20 18:43:18
408
转载 iOS工程中的info.plist文件的完整研究
我们建立一个工程后,会在Supporting files下面看到一个"工程名-Info.plist"的文件,这个是对工程做一些运行期配置的文件,很重要,不能删除。如果你在网上下载的工程中的这个文件名只是Info.plist,那么恭喜你,这个工程太老了,是用包含SDK2.0以前的Xcode生成的,不过没关系,不影响使用。如果你使用文本编辑器打开这个文件,你会发现这是一个XML格式的文
2013-10-20 18:34:48
416
原创 IOS中的单例模式
单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。1.单例模式的要点: 显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。2.单例模式的优点: 1.实例控制:Singleton 会阻止其他对象实例化其自己的 Singlet
2013-10-19 22:48:02
249
原创 IOS多线程
ios有三种主要方法:1、NSThread。2、NSOperation。3、GCD。 1、 NSThread:调用方法如下:如果需要函数参数的话,可以通过Object传递。1.1:[NSThread detachNewThreadSelector:@selector(threadInMainMethod:) toTarget:self withObject:nil
2013-09-24 17:42:57
240
原创 synchronized
这个东西其实就是 一个加锁。如果self 其他线程访问,则会阻塞。这样做一般是用来对单例 进行一个死锁的保护@synchronized(self) {//something like this kGoableValue = _shareInstance;}一、当两个并发线程访问同一个对象object中的这个synchroniz
2013-09-15 18:33:17
292
原创 深拷贝和浅拷贝 Deep copy and Shadow copy
Objective-C中的copy和c++的一样分深拷贝和浅拷贝,怎样区分这两个对象呢?我的理解是: (1)深拷贝,就是新拷贝一块内存交给对象使用。 (2)浅拷贝,就是觉得拷贝内存太浪费,直接给你我的地址吧,相当于retain。
2013-09-15 17:55:17
783
转载 iOS内存管理
有时候一个所有者创建一个对象后,会立刻将该对象的指针传递给其它所有者。这时,这个创建者不希望再拥有这个对象,但如果立刻给它发送一个release消息会导致这个对象被立刻释放掉——这样其它所有者还没有来得及保留该对象。解决这个两难问题的方法是,给对象发送一个autorelease消息:这样创建者不再拥有该对象的所有权;该对象成为自动释放的对象,但是不会立刻被释放掉;其它所有者可以有时间保留或复制该对
2013-09-15 17:44:54
282
转载 常见排序方法
排序算法在面试过程中是经常会考的,这是很基础的,面试官觉得你应该很熟悉这些东西,如果你半个小时内写不出来,那基本就给跪了,因为这真的是狠基础狠基础的东西,所以我们得对一些基本的排序算法烂熟于胸,对这些排序思想,效率了如指掌,才能让面试官觉得你还行。基本的排序算法有:直接插入排序,冒泡排序,简单选择排序,shell排序,归并排序,快速排序,堆排序。其中归并,快速,堆排序是面试时候比较喜欢考的,因为这
2013-09-12 14:38:19
294
转载 IOS常用函数
1、获取本地的语言[cpp] view plaincopy+ (NSString *)getLocalLanguage { NSString *language = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectA
2013-09-06 20:08:52
318
转载 关于TableViewCell生成时dequeueReusableCellWithIdentifier的认识
在使用TableView的时候,下面一段代码是必须的,也是最标准的:[cpp] view plaincopyprint?- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
2013-09-01 19:59:34
239
原创 UIWindowLevel
UIWindow & UIWindowLevel笔记一、UIWindow是一种特殊的UIView,通常在一个程序中只会有一个UIWindow,但可以手动创建多个UIWindow,同时加到程序里面。UIWindow在程序中主要起到三个作用: 1、作为容器,包含app所要显示的所有视图 2、传递触摸消息到程序中view和其他对象 3、与UIViewControll
2013-08-29 16:18:36
283
原创 GCD(Grand Central Dispatch)
GCD(Grand Central Dispatch)1. GCD: 异步执行任务的技术之一,一般是将应用程序中记述的线程管理用代码在系统级实现,由于是系统级的管理,这样的话将有更好的线程效率。2. 使用方法如下:dispatch_async(queue, ^{ // 想执行的任务});开发者要做的只是定义想执行的任务并追加到适当的Dispatch Q
2013-08-22 05:43:31
448
转载 NSJSONSerialization介绍
ios5中apple增加了解析JSON的api——NSJSONSerialization。网上已经有人做过测试,NSJSONSerialization在效率上完胜SBJSON、TouchJSON、YAJL、JSONKit、NextiveJson。详情见这里。既然apple为我们提供了这么良好的工具,我们没理由不用吧。 NSJSONSerialization提供了将JSON数据转换为Fou
2013-08-22 05:40:02
305
转载 NSUserDefaults读取和写入自定义对象
NSUserDefaults可以存取一些短小的信息。比如存入再读出一个字符串到NSUserDefaults:[cpp] view plaincopyNSString *string = [NSString stringWithString @"hahaha"]; NSUserDefaults *ud = [NSUserDefault
2013-08-21 03:20:44
238
原创 UIApplication 深入学习
很多时候,我们不需要关心这个类,我们很少继承这个类,偶尔会调用这个类的api来实现一些功能,但是不可否认,这个类是iOS编程中很重要的一个概念。UIApplication的核心作用是提供了iOS程序运行期间的控制和协作工作。每一个程序在运行期必须有且仅有一个UIApplication(或则其子类)的一个实例。回想一下我在前面的文章“main函数研究”的文章中提到的main函数的代码,可以看
2013-08-21 02:50:19
300
转载 NSNotificationCenter 的详细说明
NSNotificationCenter 的详细说明 1. 定义一个方法 -(void) update{ } 2. 对象注册,并关连消息 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update)
2013-08-19 19:55:18
222
原创 IOS中关于Http解析
IOS之同步请求、异步请求、GET请求、POST请求1、同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作,2、异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行3、GET请求,将参数直接写在访问路径上。操作简单,不过容易被外界看到,安全性
2013-08-19 18:17:23
407
转载 自定义UITableViewCell
自定义UITableViewCell有时候我们需要自己定义UITableViewCell的风格,其实就是向行中添加子视图。添加子视图的方法主要有两种:使用代码以及从.xib文件加载。“”上篇文章介绍了如何用UITableView显示表格,并讲了几种UITableViewCell的风格。不过有时候我们需要自己定义UITableViewCell的风格,其实就
2013-08-05 15:52:36
287
转载 IOS: 文件的增加删除查询
IOS: 文件的增加删除查询//创建文件-(void)CreateFile:(NSString*)path fileName:(NSString*)filename{ //创建文件管理器 NSFileManager *fileManager = [NSFileManager defaultManager]; //更改到待操作
2013-08-03 17:39:03
355
转载 IOS:XCode快捷键
XCode快捷键1. 文件CMD + N: 新文件CMD + SHIFT + N: 新项目CMD + O: 打开CMD + S: 保存CMD + SHIFT + S: 另存为CMD + W: 关闭窗口CMD + SHIFT + W: 关闭文件2. 编辑CMD + [: 左缩进CMD + ]: 右缩进CMD + CTRL + LEFT:
2013-08-03 17:38:00
324
转载 const int a; int const a; const int *a; int * const a; int const * a const; 之间的区别
const int a; int const a; const int *a; int * const a; int const * a const; 之间的区别const int a; int const a; 这两个写法是等同的,表示a是一个int常量。const int *a; 表示a是一个指针,可以任意指向int常量或者int变量,它总是把它所指向的目标当作一个
2013-08-03 17:36:36
838
转载 IOS:NSString 和NSData
NSString 和NSDataNSString 和NSData NSString 转换成NSData 对象 NSData* xmlData = [@"testdata" dataUsingEncoding:NSUTF8StringEncoding]; NSData 转换成NSString对象 NSData *
2013-08-03 17:35:55
341
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人