iOS
ajrm0925
这个作者很懒,什么都没留下…
展开
-
使用Three20
Three20(简称:TT)是Facebook维护的一个开源iPhone应用框架。框架封装了一系列视觉控件,网络组件,和工具方法。最近使用TT重构了一个app,这个app在1万行规模使用的是原生代码,架构非常简单。增长到2万行规模,这个原生的架构已经疲于应付迅速变化的业务需求,因此我们采用TT进行了重构。这里,简单介绍一下使用TT开发的app采用了怎样的架构,以及开发过程中的经验和教训。app转载 2012-03-24 21:44:45 · 1084 阅读 · 0 评论 -
iOS本地化
1、将 Info.plist 本地化在 Info.plist 上右键点选 Get Info,在 General 标签下,点击 Make File Localizable 按钮。里面会有一个默认的英文版本,点击 Add Localization 按钮,例如我添加 中文,zh-CN,日文。那么这样,我们回到xcode中,就可以看见,Info.plist 可以展开,变成三个,分别是 Engl原创 2012-03-31 18:04:06 · 3345 阅读 · 0 评论 -
ObjC中易混淆的数据类型
关于空值类型http://www.cnblogs.com/shuaixf/archive/2012/03/05/2380463.html关于数值类型http://blog.sina.com.cn/s/blog_6c6b2acd0100z4jb.htmlhttp://blog.sina.com.cn/s/blog_83940dfb0100y1pl.html转载 2012-04-02 21:48:19 · 790 阅读 · 0 评论 -
NSMethodSignature和NSInvocation的使用
动态调用方法时会用到,例子-(NSString *)myMethod:(NSString *)param1 withParam2:(NSNumber *)param2 { NSString *result = @"objc"; NSLog(@"par = %@",param1); NSLog(@"par 2 = %@",param2); re转载 2012-03-19 10:57:56 · 4562 阅读 · 0 评论 -
iPhone开发之判断当前的网络状态
1、添加 framework:将 SystemConfiguration.framework 添加进工程。2、下载 http://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip复制里面的 Reachability.h 和 Reachability.m 到项目中3、调用的代码:原创 2012-04-06 13:10:03 · 5357 阅读 · 0 评论 -
ObjC的initialize和init
Objective-C很有趣的一个地方是,它非常非常像C。实际上,它就是C语言加上一些其他扩展和一个运行时间(runtime)。有了这个在每个Objective-C程序中都会起作用的附加运行时间,给了它一些动态的特性。C和C++没有运行时间,他们仅仅被编译为完全按照代码的顺序去执行,不多也不少。Objective-C中带有运行时间的好处是,它可以在你的程序运行的流程中进行参与。在Objec转载 2012-04-06 13:38:23 · 22466 阅读 · 0 评论 -
iOS多线程
iOS的多线程,涉及到如下一些类,这里集中做个介绍,免得混淆。1、NSTimer很显然,这是定时器类2、NSTaskiOS 不支持 NSTask在很多并发操作的时候,多线程太耗资源,也太危险,这时候多进程出来了,通过 NSTask 可调用外部可执行程序3、NSThreadiOS 支持多个层次的多线程编程,层次越高的抽象程度越高,使用起来也越方便,也是苹果最推荐使用的方法原创 2012-03-20 11:29:49 · 6717 阅读 · 2 评论 -
iPhone使用委托在不同的窗口之间传递数据
在iOS里两个UIView窗口之间传递参数方法有很多,比如 1、使用SharedApplication,定义一个变量来传递2、使用文件,或者NSUserdefault来传递3、通过一个单例的class来传递 4、通过Delegate来传递 前面3种方法,暂且不说,这次主要学习如何使用通过Delegate的方法来在不同的UIView里传递数据比如: 在窗口1中打开窗口2,然后转载 2012-03-22 10:51:09 · 831 阅读 · 0 评论 -
Cocoa Touch的控件拖到view上,运行时却看不到?
现象:Cocoa Touch 的控件拖到 view 上,运行时却看不到。原因:在 Interface Builder 中设计的 view 没保存,汗啊,用的还是比较老的 xcode 3.2.4,常忘保存。原创 2012-04-18 09:01:31 · 658 阅读 · 0 评论 -
使用UIImagePickerController从iPhone照片库或照相机获取图像
简单记一下:@interface PhotoAppViewController : UIViewController UIImagePickerControllerDelegate>-(IBAction) getPhoto:(id) sender { UIImagePickerController * picker = [[UIImagePickerController all转载 2012-04-18 16:34:11 · 9058 阅读 · 0 评论 -
两种方式隐藏键盘
- (void)viewDidLoad { [super viewDidLoad]; UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyBoard:)]; tapGestu原创 2012-04-18 14:15:38 · 990 阅读 · 0 评论 -
UISearchBar
1、去掉 UISearchBar 的背景[[searchBar.subviews objectAtIndex:0] removeFromSuperview];或者 for (UIView *subview in searchBar.subviews) { if ([subview isKindOfClass:NSClassFromString(@"UISearc原创 2012-04-19 11:08:22 · 1871 阅读 · 0 评论 -
KVC的用法
示例1:基本赋值取值@interface Book : NSObject { NString *name;}@end#import "Book.h"@implementation Book@end这个Book类太简单了,只有一个实例变量name。而且,按照以前掌握的技术,没有办法给这个变量赋值了。下面KVC登场:Book *book=[[Book all转载 2012-04-21 17:12:38 · 4725 阅读 · 0 评论 -
The operation couldn't be completed.(Cocoa error 256)
在使用initWithContentsOfURL的时候,出现如题所示的错误,查网络没问题,在编码上,服务器和客户端都是utf8,好像也没什么问题,找来找去也没发现什么不对,因在url参数中我用了0|5的形式,难道是那个竖线的问题?索性换成0_5的形式试试,就ok了!看来真是url中竖线的问题,早听说Google不推荐在URL里使用竖线,懒得究其原因,记住便是。原创 2013-01-19 10:59:31 · 4883 阅读 · 0 评论 -
NSBundle的使用
NSBundle 束,是一种特定的文件类型,其中的内容遵循特定的结构。NSBundle 的一个主要作用是获取 Resources 文件夹中的资源。使用主束来获取需要的资源文件:NSBundle *bundle = [NSBundle mainBundle];NSString *plistPath = [bundle pathForResource:@"statedictionary" of转载 2012-03-31 16:01:43 · 1315 阅读 · 0 评论 -
protocol使用举例
ContactsCtrl.h 代码:#import @protocol ContactCtrlDelegate-(void) DismissContactsCtrl; @end @interface ContactsCtrl : UIViewController { IBOutlet UINavigationBar *ContactNavBar;转载 2012-04-03 00:01:29 · 941 阅读 · 0 评论 -
Three20/Three20.h: No such file or directory
Three20/Three20.h: No such file or directory引用静态库,常会出现这样“找不到文件或目录”的错误提示,很显然路径设置不对,一般都是要求写“相对路径”,而不是“绝对路径”!例如:项目A 需要引用 静态库项目B,假设 A 和 B 在同一目录下,那么 A 的 “Header Search Paths” 设为 “../B”,选项 “Recursive” 也原创 2012-03-24 21:10:56 · 1213 阅读 · 0 评论 -
Warning: The Copy Bundle Resources build phase
Warning: The Copy Bundle Resources build phase contains this target's Info.plist file 'test320-Info.plist'.如果是xcode 3,test320_Info.plist -> Get Info -> Targets 里面不要选任何东西。然后在项目的 Targets->test320->C转载 2012-03-25 13:33:31 · 2662 阅读 · 0 评论 -
Code Sign error
真机(已越狱)调试发布程序出现:Code Sign error: The identity 'iPhone Developer' doesn't match any valid certificate/private key pair in the default keychain然后把 "code signing identity" 设置为 “Don't Code Sign” 又出现以下转载 2012-03-25 13:52:40 · 3635 阅读 · 0 评论 -
iOS中SQLite的使用
第一步:首先创建 sqlite 数据库文件,这里推荐用 firefox 的插件 SQLite Manager,使用的方便性比 SQLiteSpy 强多了。创建数据库、操作数据库等功能用 SQLite Manager 超级方便。这里创建数据库文件为 test.sqlite,表 table1,字段 id(INTEGER,主键),name(VARCHAR)。随便添加几条数据用于测试。第二步:添加系统原创 2012-03-27 14:26:40 · 4111 阅读 · 0 评论 -
几个bug的原因
1、[NSArray arrayWithObjects: [ NSNumber numberWithInt:_id],[NSString stringWithUTF8String:_name]];warning: missing sentinel in function call原因:NSArray 数组最后缺少一个 nil。2、char *csql = [sql UTF8String原创 2012-03-27 17:24:23 · 756 阅读 · 0 评论 -
Using Xcode Storyboarding (iPhone iOS 5)
http://www.techotopia.com/index.php/Using_Xcode_Storyboarding_(iPhone_iOS_5)转载 2012-03-14 13:31:43 · 589 阅读 · 0 评论 -
CoreData的使用
第一步:创建一个 DataDemo.xcdatamodel 文件,在其中建一个实体名字为 Entity1 ,实体中建两个字段 id 和 name。第二步:为项目添加 CoreData.framework 框架,然后在 .pch 中加入 #import 第三步:在 app delegate 中定义 core data 的相关对象(同时完成它们的初始化工作).h 文件:#import转载 2012-03-30 13:21:09 · 3456 阅读 · 1 评论 -
javascript检测iPhone/iPod/iPad
if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))){ document.write(''); }if((navigator.userAgent.match(/iPad/i))){ document.write('');}转载 2012-03-30 15:10:56 · 1291 阅读 · 0 评论 -
KVO/KVC
KVO(NSKeyValueObserving 的简称)、KVC(NSKeyValueCoding 的简称)在很多时候接触到很多地方都有对 KVC,KVO 的描述,但是都是一笔带过。只知道这是Object-C提供的一个不错的机制,可以很好的减少代码。首先我们先了解下 KVO 的机制,KVO:当指定的对象的属性被修改了,允许对象接收到通知的机制。每当在类中定义一个监听 如: [self转载 2012-03-31 16:43:27 · 16372 阅读 · 0 评论 -
iOS单例模式的实现
单例是指静态分配的实例,而 iphone sdk 中全是这种实例,例如[UIApplication sharedApplication] 返回一个指向代表应用程序的单例对象的指针。[UIDevice currentDevice] 获取一个代表所有使用硬件平台的对象。将类方法与单例相结合,便可以在程序的任何地方访问静态实例,而无需使用指向对象的指针或保存它的实例变量。创建类的唯一实例(普通单转载 2012-03-31 17:10:29 · 21313 阅读 · 4 评论 -
Xcode 4.x 破解及真机调试
http://kb.cnblogs.com/a/2342666/http://www.cnblogs.com/flyingzl/articles/2207717.html转载 2012-03-14 23:11:13 · 782 阅读 · 0 评论 -
非正式协议/正式协议
1、非正式协议(interface) 非正式协议在Obj-c中关键字虽然是interface,但是这个和C#中的接口并不完全相同。 回忆之前学过的内容,我们定义一个类Sample时,会生成一个Sample.h,代码如下: #import @interface Sample:NSObject { } -(void) HelloWorld; @转载 2012-04-01 13:40:33 · 2767 阅读 · 0 评论 -
Xcode的SVN配置
第一步:配置 SubversionLeopard 中自带了 SVN,但 Xcode 的项目文件中,并不是所有文件都适于加入 SVN 中进行管理,比如编译后的文件和编译过程中产生的文件,这些文件不属于源代码,应该告诉 svn 忽略掉,方法:编辑 ~/.subversion/config 文件(可以直接在终端上输入: vi ~/.subversion/config 来编辑) (使用 vi转载 2012-04-01 15:52:29 · 898 阅读 · 0 评论 -
xcode在调试时无法查看变量值
现象:在xcode中调试程序的时候,无论是鼠标指在变量上,还是在gdb中po命令都看不到内存中变量的值。解决办法:在Project的Build中把 Optimization Level 设置成 None 即可。原创 2013-03-07 15:53:05 · 14422 阅读 · 4 评论