
IOS开发
文章平均质量分 67
simbi
232
展开
-
speex编译for ios
speex依赖于libogg,需要先编译libogglibogg:./configure -prefix=/Users/simbi/Desktop/speex/ogg/i386 -host=i386-apple-darwin -build=x86_64-apple-darwin11.3.0 CC="/Developer/Platforms/iPhoneSimulator.platform/原创 2012-05-10 17:52:53 · 2921 阅读 · 7 评论 -
高效SQL语句必杀技
No SQL,No cost. SQL语句是造成数据库开销最大的部分。而不良SQL写法直接导致数据库系统性能下降的情形比比皆是。那么如何才能称得上高效的SQL语句呢?一是查询优化器为当前的SQL语句生成最佳的执行计划,保证数据读写使用最佳路径;二是设置合理的物理存储结构,如表的类型,字段的顺序,字段的数据类型等。本文主要描述如何编写高效的SQL语句并给出示例。下面的描述主要分为三个部分,一转载 2012-04-05 09:12:32 · 460 阅读 · 0 评论 -
iPhone:constrainedToSize获取字符串的宽高 自定义label的高度和宽度
名人名言:窃以为天地之所以不息,国之所以立,贤人之德业之所以可大可久,皆诚为之也。清·曾国藩《复贺耦庚中丞》窃:谦指个人的意见。我以为天地的运转不息,国家的建立和巩固,卓越人物的道德事业的发扬和持久,关键在于真诚。——曾国藩 在应用UILabel存放字符串时,经常须要获取label的长宽数据,本文列出了项目组常用的策画办法。1.获取宽度,获取字符串不折行单行显示时所须要的长转载 2012-03-19 18:38:50 · 4192 阅读 · 0 评论 -
iPhone SMS气泡UI
以前在cocoaChina看到有会员贡献了一个sms气泡的UI demo源码,原理就是将每一条消息生成一个背景是气泡的UIView,然后将所有的消息都生成有气泡的UIView,保存在一个数组当中,然后遍历这个数组,addSubview到主界面上。这样做有一个坏处就是,如果消息太多,就会生成大量的UIView,占用大量的内存, 在scroll的时候会有性能影响。具体可以下载源码一探究竟。http:转载 2012-03-19 17:20:12 · 983 阅读 · 0 评论 -
SQLite在多线程环境下的应用
这几天研究了一下SQLite这个嵌入式数据库在多线程环境下的应用,感觉里面的学问还挺多,于是就在此分享一下。先说下初衷吧,实际上我经常看到有人抱怨SQLite不支持多线程。而在iOS开发时,为了不阻塞主线程,数据库访问必须移到子线程中。为了解决这个矛盾,很有必要对此一探究竟。关于这个问题,最权威的解答当然是SQLite官网上的“Is SQLite threadsafe?”这个问转载 2012-04-01 17:04:57 · 964 阅读 · 0 评论 -
iPhone开发学习笔记004——自定义背景透明非全屏弹出窗口,子类化UIWindow
最终要实现的效果如下,点击上面的按钮可以弹出一个背景透明非全屏的弹出窗口,不使用UIActionSheet和UIAlertView. 下面说说具体过程。一、新建一个single view application工程,并且添加相关的控件并拖拽连接:如下图:新建一个OC类,继承自UIWindow,如下图:CustomWindow.h:转载 2012-03-16 13:55:56 · 1725 阅读 · 2 评论 -
iPhone开发学习笔记003——UITableViewCell内容自适应高度
此篇使用前一篇的实例,只是将对应的Cell.xib界面换成如下所示:然后,oneViewController中添加属性:dataArray,即 *.h中添加@property (nonatomic,retain)NSArray *dataArray;*.m中添加:@synthesize dataArray;oneViewController.m中的部分代码如下:转载 2012-03-16 11:23:50 · 1991 阅读 · 1 评论 -
iPhone开发学习笔记001——Xib界面上的控件与代码的相互关联方法
(注:环境Mac OS X Lion 10.7.3 + Xcode 4.2.1 + iOS SDK 5.0.)比如工程中添加了一个UIViewController的sub class,新建的时候选中“With XIB for user interface”,则新建完成会同时生成三个文件:xxx.h, xxx.m, xxx.xib(前期也可是*.nib,xib和nib都指UI源文件,后来苹果统一转载 2012-03-16 10:26:05 · 734 阅读 · 0 评论 -
iPhone开发学习笔记002——Xib设计UITableViewCell然后动态加载
(注:环境Mac OS X Lion 10.7.3 + Xcode 4.2.1 + iOS SDK 5.0.)一、新建iOS Application工程,选择Single View Application,不要选中Use Storyboard.假设指定的是product name和class prefix都是one,则完成后自动生成代码视图如下图:该应用默认加载的是oneViewC转载 2012-03-16 10:26:45 · 976 阅读 · 1 评论 -
NSDateFormatter设定日期格式
部分日期格式的总结:NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init]autorelease];[dateFormatter setAMSymbol:@"AM"];[dateFormatter setPMSymbol:@"PM"];[dateFormatter setDateFormat转载 2012-03-19 15:51:34 · 520 阅读 · 0 评论 -
字符串和数组NSString NSArray操作
1//创建字符串对象数组 NSArray *array = [str componentsSeparatedByString:@"@"];//就是以@为标示 输出看看啦 int count=[array count]; int i; for(i=0;i { printf("%i: %s\n",i,[[array objectAtIndex:i] UTF8Str转载 2012-03-21 10:35:01 · 620 阅读 · 0 评论 -
iPhone开发之UISearchBar学习
iPhone开发之UISearchBar学习是本文要学习的内容,主要介绍了UISearchBar的使用,不多说,我们先来看详细内容。关于UISearchBar的一些问题。1、修改UISearchBar的背景颜色UISearchBar是由两个subView组成的,一个是UISearchBarBackGround,另一个是UITextField. 要IB中没有直接操作背景的属性。方法是转载 2012-04-20 11:41:34 · 2077 阅读 · 0 评论 -
解决NSXmlParser无法解析非utf-8编码的XML问题的方法
ios开发中经常会用到解析XML,但是iOS提供的NSXmlParser只能解析encoding是utf-8的XML文件。即xml文件开头必须是在中文网页中,经常会碰到gb2312或GBK编码的XML文件,如当iphone开发中的NSXMLParser碰到非utf-8编码时,会直接触发parser:parseErrorOccurred:,返回的错误编码是31,之后直转载 2012-04-16 09:08:50 · 629 阅读 · 0 评论 -
IOS开发缓存机制之—本地缓存机制
前面一篇文章介绍了iOS设备的内存缓存,这篇文章将设计一个本地缓存的机制。功能需求这个缓存机制满足下面这些功能。1、可以将数据缓存到本地磁盘。2、可以判断一个资源是否已经被缓存。如果已经被缓存,在请求相同的资源,先到本地磁盘搜索。3、可以判断文件缓存什么时候过期。这里为了简单起见这里,我们在请求url资源的时候,给每次请求的文件设定一个过期的时间。4转载 2012-03-23 15:25:43 · 688 阅读 · 0 评论 -
使用EMOJI表情
由于IOS系统支持日文中的字块编码,所以在UILable,UITextField,UIAlertView等控件中使用emoji表情编码(emoji就是表情符号;词义来自日语(えもじ,e-moji,moji在日语中的含义是字符)),例如:[plain] view plaincopyNSString *s = [NSString stri转载 2012-03-23 10:24:03 · 3756 阅读 · 0 评论 -
UITextField编辑后关闭虚拟键盘方法笔记
UITextField编辑框经常会遇到关闭虚拟键盘的情况。总结一下,一下的方法。方法一:通过触摸背景关闭虚拟键盘在RootViewController.h中,如下:@interface RootViewController : UIViewController { UITextField *nameTextField; UITextFie转载 2012-03-22 10:37:37 · 775 阅读 · 0 评论 -
textField被虚拟键盘挡住解决方法
经常会遇到以下情况,textField被虚拟键盘挡住的情况,解决。RootViewController.h 中:#import @interface RootViewController : UIViewController { UITextField *textField1; UITextField *textField2; }@property (nonatom转载 2012-03-22 10:36:07 · 776 阅读 · 0 评论 -
由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起
init方法在init方法中实例化必要的对象(遵从LazyLoad思想)init方法中初始化ViewController本身 loadView方法当view需要被展示而它却是nil时,viewController会调用该方法。不要直接调用该方法。如果手工维护views,必须重载重写该方法如果使用IB维护views,必须不能重载重写该方法转载 2012-03-21 10:37:59 · 359 阅读 · 0 评论 -
UITableView 详细讲解
-、建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)]; [DataTable setDelegate:self]; [DataTable setDataSource:self]; [self.view addSubview:DataTable]; [转载 2012-03-21 10:36:27 · 454 阅读 · 0 评论 -
UIAlertView用法
1. 最简单的用法UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"这是一个简单的警告框!"转载 2012-03-15 13:38:17 · 1461 阅读 · 0 评论 -
iOS并发编程指南(4)
Migrating Away from Threads从现有的线程代码迁移到Grand Central Dispatch和Operation对象有许多方法,尽管可能不是所有线程代码都能够执行迁移,但是迁移可能提升性能,并简化你的代码。使用dispatch queue和Operaiton queue相比线程拥有许多优点:应用不再需要存储线程栈到内存空间消除了创建和配置转载 2012-03-30 11:25:17 · 1806 阅读 · 0 评论 -
iOS并发编程指南(2)
Dispatch Queuesdispatch queues是执行任务的强大工具,允许你同步或异步地执行任意代码block。原先使用单独线程执行的所有任务都可以替换为使用dispatch queues。而dispatch queues最大的优点在于使用简单,而且更加高效。dispatch queues任务的概念就是应用需要执行的一些工作,如计算、创建或修改数据结构、处理数据等等。我转载 2012-03-30 11:19:09 · 1071 阅读 · 0 评论 -
QQ风格的列表
头文件: Ios代码 #import @interface QQstyleViewController : UIViewController { UITableView *table; NSMutableArray *array; BOOL *flag;转载 2012-03-09 11:14:57 · 926 阅读 · 0 评论 -
NSBundle介绍
bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle,cocoa提供了类NSBundle.我们的程序是一个bundle. 在Finder中,一个应用程序看上去和其他文件没有什么区别. 但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录. 我们把这个目录叫做程转载 2012-03-09 11:49:25 · 307 阅读 · 0 评论 -
气泡聊天
Ios代码 - (UIView *)bubbleView:(NSString *)text from:(BOOL)fromSelf { UIView *returnView = [[UIView alloc] initWithFrame:CGRectZero]; returnView.backgroundColor = [UIColor clearCo转载 2012-03-09 11:21:58 · 763 阅读 · 0 评论 -
@property详解:nonatomic,retain
一直使用@property,今天特意整理了一下相关的资料。主要原因还是在对一个CCSprite*类型的数据成员进行赋值,在使用中一直报空指针crash掉。仔细回想了一下内存处理机制,我们在Object-C中,只要不是自己alloc创建的对象,都是autorelease,都不要我们管理。比如一开始我一直使用[NSMutableArray arrayWithCapacity:]创建,但创建后的mu转载 2012-03-09 11:06:53 · 1067 阅读 · 1 评论 -
浅析ObjectiveC 深浅拷贝学习
Objective C是一个不错的开发语言,Objective-C不支援运算子多载,与C++不同,但和Java相同,Objective C只容许对象继承一个类别(不设多重继承)。AD:iPhone开发语言Objective-C是一种简单的计算机语言,简称OC,支持复杂南通的面向对象编程。Objective C语言,通常写作ObjC和较少用的Objective转载 2012-03-09 10:54:17 · 982 阅读 · 0 评论 -
iOS应用的真机调试
必须条件:99美元的帐号,没有这个就不用再往下看了。 首先,登录到http://developer.apple.com/devcenter/ios/index.action,如果已经购买了iPhone Develop Program(iDP),登录进去后,页面右上角会看到如下图所示的页面: 点击第一项:iOS Provisioning Portal,然后转载 2012-03-09 11:55:01 · 1564 阅读 · 0 评论 -
IOS开发UI篇之──自定义加载等待框(MBProgressHUD)
这里介绍一下网友开源的MBProgressHUD类,实现等待框,一、网上下载 MBProgessHUD 类文件,直接导入到工程即可二、示例分析在我的工程中示例如下:1)在ShowImageViewController.h头文件代码如下:#import #import "MBProgressHUD.h"@int转载 2012-03-23 15:28:14 · 3313 阅读 · 1 评论 -
IOS开发UI篇之──键盘添加工具条
IOS开发中,iphone/ipad/itouch采用的触摸设计,本身没有硬件键盘,一般都是点击输入框之后,弹出一个虚拟键盘出来,因此开发中,经常在完成编辑输入之后,要写程序代码来关闭软键盘的输出,非常繁琐,当然关闭软键盘的方式有很多。本文要分享的是一个键盘顶部工具条的类,通过这个工具条,可以很方便的关闭键盘,而且有上一项,下一项的输入框切换,非常方便,效果如下图所示:转载 2012-03-23 15:23:10 · 600 阅读 · 0 评论 -
自定义UITableView中Delete操作的按钮
以前写过一篇文章:修改UITableView中Delete操作的默认按钮,这只是让默认的Delete按钮显示成了中文的删除按钮而已,如果想将这个删除按钮换成其他图片形式的,怎么办呢? 看一下下面的实现。 Ios代码 -(UITableViewCell *)tableView:(UITableView *)tableView cellForR转载 2012-03-09 13:24:46 · 1674 阅读 · 0 评论 -
IOS 数据存储
ios数据存储包括以下几种存储机制:属性列表对象归档SQLite3CoreDataAppSettings普通文件存储1、属性列表[cpp] view plaincopy// // Persistence1ViewController.h // Persistence1 //转载 2012-03-28 18:30:22 · 10167 阅读 · 0 评论 -
iOS并发编程指南(1)
iOS Concurrency Programming GuideiOS 和 Mac OS 传统的并发编程模型是线程,不过线程模型伸缩性不强,而且编写正确的线程代码也不容易。Mac OS 和 iOS 采取 asynchronous design approach 来解决并发的问题。引入的异步技术有两个:Grand Central Dispatch:系统管理线程,你不需要编写转载 2012-03-30 11:16:57 · 1455 阅读 · 0 评论 -
iOS并发编程指南(3)
Dispatch Sources现代系统通常提供异步接口,允许应用向系统提交请求,然后在系统处理请求时应用可以继续处理自己的事情。Grand Central Dispatch正是基于这个基本行为而设计,允许你提交请求,并通过block和dispatch queue报告结果。dispatch source是基础数据类型,协调特定底层系统事件的处理。Grand Central Disp转载 2012-03-30 11:24:22 · 2147 阅读 · 0 评论 -
iPhone开发实践中如何去完美解决内存管理问题
本文由YoungShook原创,转载务必在明显处注明:http://blog.youkuaiyun.com/youngshook前段时间和工作室的朋友一起协作开发了一款iOS平台上的软件,在软件完工之时,通过Instruments测试Leak,发现内存泄露严重,在解决了软件内存泄露之后,通过Instruments测试,内存泄露问题解决,特把一些管理内存的一些方法和网上常见的内存泄露解决转载 2012-03-13 17:31:41 · 357 阅读 · 0 评论 -
iPhone多视图开发案例纪实
本文是iPhone多视图开发和WebService客户端技术实现的一个案例介绍。文中以一个简单的例子来说明iPhone多视图开发。1.新建iPhone项目打开XCode,新建IPhone项目,选择“window-based Application”模板,项目名称暂定为shouji138,效果如下图:完成之后的界面如下图:2.添加控制视图的ViewCo转载 2012-03-12 10:38:18 · 850 阅读 · 0 评论 -
IOS多线程开发之GCD
GCD全称为Grand Central Dispatch 在IOS4才开始,用来实现多线程。它是IOS多线程抽象层次最高的一层,下面还有更加轻量级的Cocoa operations,和Thread。 当看到GCD的使用我仿佛看到了Android中的Handler和AsynTask。[cpp] view plaincopy在主线程中任意转载 2012-03-28 18:32:33 · 2733 阅读 · 0 评论 -
详解Cocoa Touch网络编程
详解Cocoa Touch网络编程是本文要介绍的内容,不多说,不如我们先来看内容。一:确认网络环境3G/WIFI1. 添加源文件和framework 开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过Apple的审查的。Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法。要在应用程序程序中使用R转载 2012-03-12 10:26:10 · 636 阅读 · 0 评论 -
解析iphone多线程
不管是iphone中还是其他的操作系统,多线程在各种编程语言中都是难点,很多语言中实现起来很麻烦,objective-c虽然源于c,但其多线程编程却相当简单,可以与java相媲美。多线程编程是防止主线程堵塞,增加运行效率等等的最佳方法。而原始的多线程方法存在很多的毛病,包括线程锁死等。一、线程创建与启动线程创建主要有二种方式:(id)init; // designate转载 2012-03-12 11:26:56 · 329 阅读 · 0 评论 -
在iPhone应用中如何避免内存泄露
我们曾经对iPhone的内存管理做过比较深入的报道,如何有效控制iPhone内存管理的对象的所有权与引用计数和以及iPhone内存的自动释放与便捷方法。本文我们将介绍在iPhone应用中如何避免内存泄露。想了解“在iPhone应用中如何避免内存泄露”就必须先了解iPhone内存管理的所有权。关于所有权所有权是iPhone内存管理的核心思想,对象的所有者负责在使用完对象后进行释放转载 2012-03-12 11:18:38 · 361 阅读 · 0 评论