摘要:
assign: 简单赋值,不更改索引计数copy: 建立一个索引计数为1的对象,然后释放旧对象retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1Copy其实是建立了一个相同的对象,而retain不是:比如一个NSString对象,地址为0×1111,内容为@”STR”Copy到另外一个NSString之 后,地址为0×2222,内容相同,新的对象retain为1, 旧有对象没有变化retain到另外一个NSString之 后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1也就是说,retain是指针拷贝,cop 阅读全文
摘要:
其实,在sqlite3中没有top的语法结构,但在sqlite3中有相关的语法能实现跟top语法相同的功能,sqlite3 sql是用limit这样的语法来实现的;如: select * from table wherename='_安静ゝ' order by id limit 0,10;这个效果就相当于select top 10 * from table where name='_安静ゝ';如果还有更精确的:select * from table where name='_安静ゝ' order by date desc,id limit 0,1 阅读全文
摘要:
作为iOS平台的开发者,是否曾经为内存问题而苦恼过?内存莫名的持续增长,程序莫名的crash,难以发现的内存泄漏,这些都是iOS平台内存相关的常见问题;本文将会详细介绍iOS平台的内存管理机制,autorelease机制和内存的使用陷阱,这些将会解决iOS平台内存上的大部分问题,提高了程序的稳定性;1 iOS平台内存管理介绍iOS平台的内存管理采用引用计数的机制;当创建一个对象时使用alloc或者allWithZone方法时,引用计数就会+1;当释放对象使用release方法时,引用计数就是-1;这就意味着每一个对象都会跟踪有多少其他对象引用它,一旦引用计数为0,该对象的内存就会被释放掉;另. 阅读全文
摘要:
Block可以帮助我们组织独立的代码段,并提高复用性和可读性。iOS4在UIKit中引入了该特征。超过100个的Apple API都使用了Block,所以这是一个我们必须开始熟悉的知识。Block是什么样的?你可以使用^操作符来声明一个Block变量,它表示一个Block的开始。intnum1=7; int(^aBlock)(int)=^)intnum2){ returnnum1+nunm2; };在如上代码中我们将Block声明为一个变量,所以可以将它当做一个函数中使用:NSLog(@"%d",aBlock(49));//adds49to7whichgivesus56.我 阅读全文
摘要:
Ios4已经直接支持blocks,很有必要学习一下。在ios,blocks是对象,它封装了一段代码,这段代码可以在任何时候执行。Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:blocks是inline的,并且它对局部变量是只读的。Blocks的定义: int (^Multiply)(int, int) = ^(int num1, int num2) {return num1 * num2;};定义了一个Multiply的blocks对象,它带有两个int参数,返回int。等式右边就是blocks的具体实现,注意{}blo. 阅读全文
摘要:
#import <UIKit/UIKit.h>#import <AVFoundation/AVFoundation.h>@interface AudioPlayerViewController : UIViewController{AVAudioPlayer *audioPlayer;AVAudioRecorder *audioRecorder;int recordEncoding;enum{ ENC_AAC = 1, ENC_ALAC = 2, ENC_IMA4 = 3, ENC_ILBC = 4, ENC_ULAW = 5, ENC_PCM = 6,} ... 阅读全文
摘要:
开始转向到IOS开发后,也慢慢觉得自己以前在大学学的东西很重要了。那些基础东西都没学进去,现在感觉到吃力了。不过青春还在,可以亡羊补牢。在OC里面或多或少会用到C或自己写一点C程序。在最近的一个项目底层框架都是同事搭建好的,很多也用到了C。项目接近尾声,我也开始有点时间来看看这些底层的代码了。首先看了sokect编程,然后在这里写到了一个函数。View Code 1 - (void) sendRequestToRelayServer 2 { 3 UInt8 buf[512] = {0}; 4 int nOffset = 4; 5 int nSrcLen = [sour... 阅读全文
摘要:
Push的原理:Push 的工作机制可以简单的概括为下图图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider。 APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器。上图可以分为三个阶段。第一阶段:.net应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。 第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。 第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹 阅读全文
摘要:
单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。1.单例模式的要点: 显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。2.单例模式的优点: 1.实例控制:Singleton 会阻止其他对象实例化其自己的 Singleton 对象的副本,从而确保所有对象都访问唯一实例。 2.灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程IOS中的单例模式 在objective-c中要实现一个单例类,至少需要做以下四个步骤: 1、为单例对象实... 阅读全文
摘要:
1:首先简单介绍什么叫线程可并发执行的,拥有最小系统资源,共享进程资源的基本调度单位。共用堆,自有栈(官方资料说明iOS主线程栈大小为1M,其它线程为512K)。并发执行进度不可控,对非原子操作易造成状态不一致,加锁控制又有死锁的风险。2:IOS中的线程iOS主线程(UI线程),我们的大部分业务逻辑代码运行于主线程中。没有特殊需求,不应引入线程增加程序复杂度。应用场景:逻辑执行时间过长,严重影响交互体验(界面卡死)等。IOS 多线程 有三种主要方法(1)NSThread(2)NSOperation(3)GCD下面简单介绍这三个方法1.NSThread 调用方法如下: 如函数需要输入参数,可.. 阅读全文