ios 开发相关基础知识
理想评论学派
苹果的忠实粉丝
展开
-
Object-C 消息转发
在Object-C中,如果一个对象无法处理某条消息,可以将该消息转发给别的对象进行处理。 要实现消息转发,必须覆盖两个方法:methodSigatureForSelector: 与 forwardInvocation: 1、构建方法签名 要将一条消息转发给另外一个对象,必须修改该消息的签名,即将该消息伪装成另外一个对象的消息。 - (NSMethodSignature原创 2011-06-13 00:38:00 · 2848 阅读 · 0 评论 -
iPhone 多点触摸
苹果ios平台的多点触摸,在3点或更多时,会丢失对其中一个或多个的跟踪。 看来以后程序中,最多使用2个点。 一般来说,2个点已经够用了 说好的5点触摸呢,坑爹啊。。。原创 2011-06-30 21:55:00 · 957 阅读 · 0 评论 -
iPhone 实现动画效果
(虽然标记的是原创,但是大部分都是书上的,个人学习过程中,学完这段写点儿东西总结下,本想贴上demo程序的,竟然没找到上传附件的地方。。。) iPhone中实现动画,主要有两种方式:UIView的动画块和Core Animation的CATransition类。 1、UIView的动画块 之所以称为动画块,是因为UView动画是成块运行的,也就是说作为完整的事务一次性运行。 beginA原创 2011-06-25 23:21:00 · 6964 阅读 · 1 评论 -
Object-C 协议 Protocol
在Object-C中,委托和数据源都是由协议实现的。协议定义了一个类与另一个类进行沟通的先验方式。它们包含一个方法列表,有些是必须被实现的,有些是可选的。任何实现了必需方法的类都被认为符合协议。1、定义协议定义协议的方式与定义类的类的方式非常相似。@protocol MyProtocol - (void)firstMethod; - (void)secondMethod;@en原创 2011-06-14 01:34:00 · 6771 阅读 · 1 评论 -
iPhone 通过多张图片实现动画
在“限时免费HD”这款应用中,当拖动显示应用列表的tableView时,右下角显示一个小熊在不停走动的动画这个动画可以通过多张普通图片形成,下面给出代码示例:NSMutableArray *array = [NSMutableArray array]; UI原创 2011-07-05 23:20:36 · 3302 阅读 · 0 评论 -
iPhone UITextField 属性
在iPhone应用中通过UITextField填写信息时,经常出现出现自动更正输入信息、首字母大写等情况尤其是在填写用户名时,这种本想提供便捷的功能反而让人感到特别麻烦今天查了相关书籍,了解了UITextField的相关属性,其实前面说的这些小功能都是可以定制原创 2011-07-05 23:38:05 · 11711 阅读 · 0 评论 -
iPhone 模态对话框 立即返回结果
iPhone中的UIAlertView用于显示一个模态对话框显示时设置代理delegate,当用户点击对话框中按钮时,系统将会调用delegate的函数从而使得程序可以根据用户的选择进行相应的处理这里使用了代理模式,虽然代理模式在ios的设计中有很多优雅的地方但是这里,用在返回模原创 2011-07-08 00:19:44 · 7269 阅读 · 2 评论 -
iPhone 弹出对话框 让用户等待
之前的一个小应用中,需要通过网络下载xml文件。在下载过程中,需要用户等待。当时的做法是显示一个gif图片,这张图片就是一个圆圈在不停的转。数据读取结束,就删除该图片。由于iPhone本身不支持gif图片,又去找了个开源的类专门用于显示gif。整个过程,又长又臭。不过还算满足需求原创 2011-07-07 23:39:17 · 6292 阅读 · 0 评论 -
iPhone 音频警告
程序如果需要发出一个音频警告信息给用户,通常可以采用3种方式:System Audio服务、Audio Queue和AVAudioPlayer。对于播放一个简单的警告提示音,System Audio是首选。Audio Queue播放对于程序的代价较高,过于复杂,毕竟我们只是想播放原创 2011-07-09 13:39:42 · 8177 阅读 · 1 评论 -
iPhone UITableViewCell 表格单元格类型
iPhone提供了4种基本的表格视图单元格,在SDK 3.0 之后,每个单元格都有3个属性textLabel,detailTextLabel和imageView。下面一一介绍这4种基本格式:1、UITableViewCellStyleDefault该格式提供了一个简单的左对齐的文原创 2011-07-09 22:57:38 · 10409 阅读 · 0 评论 -
彻底删除Xcode
先执行命令:sudo /Developer/Library/uninstall-devtools --mode=all该命令会删除/Developer目录下的大部分文件,然后把剩下的文件,手动删除即可。原创 2011-07-10 22:20:18 · 22481 阅读 · 0 评论 -
iPhone http Post数据
iPhone 使用http协议向web服务器post数据原创 2011-07-17 00:35:57 · 19066 阅读 · 1 评论 -
iPhone 通过UIRequiredDeviceCapabilities指定程序适用于哪些设备
以前在itunes中查看某个应用时,会有说明信息,表明程序适用于ios 1.0,2.0,3.0什么的。上周末将Key Manager上传到app store时,一直有个疑问,就是没有发现填写程序适用于哪些设备的地方。虽有疑问,但程序还是上传成功了,只是心里有个担心,怕程序不能通过原创 2011-07-17 20:14:21 · 29188 阅读 · 0 评论 -
iPhone开发阶段性总结
回首这个月: 按照计划,上传了一款免费小应用到app store (密码管理器 http://itunes.apple.com/cn/app/id449168494) 《Cocos2d for 0.99$》看了一半多了,受益颇多,以后尽量还是看英文书。原创 2011-07-30 18:01:18 · 7780 阅读 · 0 评论 -
iPhone NSUserDefaults 保存数据
苹果公司强烈建议在打开程序时能回复到之前关闭时的状态。 既然是苹果公司的建议,当然不能忽视。。。 如果要实现在打开程序时回复到之前的状态,那么必须记录下之前关闭时的各种信息 在启动程序时,读取这些信息并恢复状态。 苹果公司提供了一种方式用于保存这种信息,NSUserDefaults类 使用这个类以key-value字典形式保存数据,下次再取出来即可。 -原创 2011-06-30 20:52:00 · 1872 阅读 · 0 评论 -
iPhone 沙盒路径
默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。 Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下; Library:存储程序的默认设置或其它状态信息; tmp:提供一个即时创建临时文件的地方。 iTunes在与iPhone同步时,备份所有的Documents和Library文件。 iPhone在重原创 2011-06-29 22:42:00 · 2679 阅读 · 0 评论 -
iPhone 开发阶段性总结
回首这个月: 这个月真正接触到ios开发中的各种技术(之前都是学习object-c等基础知识) 进步挺大,学的东西基本上涉及了ios普通应用开发的各个方面。 这个月的学习侧重于广度,许多方面都有涉及,但是研究不深展望下个月: 要开始游戏开发的知识,读一本ios游戏开发的教程 更深入的理解网络、2D/3D引擎方面的知识 上传一个免费的小原创 2011-06-29 17:31:00 · 1085 阅读 · 0 评论 -
Cocoa UIImage 加载图像
使用[UIImage imageNamed:@"xxx.png"];多次加载图像不会出现问题。 UIImage使用一种基于文件名的缓存机制,所以它不会每次都加载新图像。原创 2011-06-16 22:35:00 · 926 阅读 · 0 评论 -
Object-C #import 指令
1、#import 2、#import "" 首先先当前目录中查找,如果未找到,则在Xcode设置的预处理程序搜索路径中查找文件。 3、#import 指令可以防止头文件被重复包含,所以不需要C++中的#ifndef #define #endif 了原创 2011-06-14 19:54:00 · 3953 阅读 · 0 评论 -
Object-C 消息机制工作原理
NSObject类声明了一个成员变量Class isa,指向创建对象的类结构。 所有的类都继承字NSObject,所有都具有这个成员变量isa,另外还具有一个指向父类结构的指针。 类中的方法以selector索引,selector的类型是SEL。专门有一个表用来在方法名和selector之间映射。 在编译的时候,只要有方法的调用,编译器都会通过selector在查找方法。原创 2011-06-14 20:18:00 · 3047 阅读 · 0 评论 -
NSRunLoop 对象
(摘自《苹果开发之cocoa编程》原话) “NSRunLoop对象专司等待。它等到事件抵达,然后把事件中转给NSApplication;它等待timer事件,然后把事件中转给NSTimer。 甚至可以附加一个网络socket到循环中,然后它就会等待那个socket上数据的抵达。” 说白了就是消息循环么,消息中转站。转载 2011-06-14 20:44:00 · 1487 阅读 · 0 评论 -
Object-C 属性相关
属性比使用手动构建的方法更有优势,包括点表示法和内存管理。 例如self.colors = [NSArray arrayWithObjects:@"gray", @"black"];将自动保留数组。 self.colors = nil; 将自动释放内存。 Property的Attributes 1、readwrite 和 readonly 其中,readwrite是默原创 2011-06-14 23:15:00 · 1279 阅读 · 0 评论 -
Object-C 正确使用内存的几条法则
1、通过含有alloc、new或copy的方法创建的对象,需要手动进行release; 2、通过创建对象的类方法返回的对象,应该是自动释放的; 3、当每个事件循环结束时,自动释放池将清空所有对象; 4、对属性进行释放时,应该时 self.myObject = nil; 而不是直接release; 5、苹果建议,不要在init函数中使用属性,而是直接使用实例变量。原创 2011-06-15 00:21:00 · 1435 阅读 · 1 评论 -
Object-C KVC & KVO
1、Key-value coding 机制允许通过变量名设置和获取变量值。 [myObject setValue:valueObject forKey:@"myKey"]; [myObject valueForKey:@"myKey"]; KVC只能处理对象,不能处理int、float等类型; 如果变量有存取方法,会被调用,但是必须正确命名。原创 2011-06-15 20:17:00 · 1603 阅读 · 0 评论 -
Cocoa Iphone 屏幕尺寸
1、状态栏:通常是20px高,在打电话或显式消息时,放大到40px。因此,在纵向模式下,应用程序的可用空间是320×460,横向模式下是480×300; 2、导航栏:通常情况下,纵向模式下是44px,横向模式下是32px。在提示模式下(不太常用),是74px,不管是纵向还是横向。 3、选项卡栏:不管纵向还是横向,都是48px。 4、工具栏:不管纵向还是很想,都是44px。 5、[原创 2011-06-18 01:03:00 · 1772 阅读 · 0 评论 -
Cocoa 通过网络获取xml文件并解析
通过一个url从网络获取一份xml文件,并解析其内容。 1、第一种方法是利用了NSData的一个构造函数,傻瓜化的通过网络获取文件,而不用考虑网络相关的各种细节。 NSURL *url = [NSURL URLWithString:@"http://222.73.161.212/ispace2/servlet/com.lemon.xml.XmlAction"]; [UIApp原创 2011-06-23 19:33:00 · 2690 阅读 · 0 评论 -
Cocoa 多线程
多线程编程中普遍遵循一个原则,就是一切与UI相关的操作都有主线程做,子线程只负责事务,数据方面的处理。 ios中启动一个新线程的方式如下: [NSThread detachNewThreadSelector:@selector(parseXML) toTarget:self withObject:nil]; 其中第三个参数withObject是传给函数的参数。 之前原创 2011-06-23 19:56:00 · 1931 阅读 · 1 评论 -
Cocoa Iphone 程序的运行过程
当程序启动时,调用NSApplication函数,该函数创建一个NSApplication程序对象。 程序对象读取nib文件并把其中的对象解包,然后给每个对象发送awakeFromNib消息。 接着,程序对象开始检查事件。 窗口服务器在接收到用户的键盘或鼠标事件时,将其放入到相应程序的事件队列中。 程序对象从队列中读取事件并转发给界面对象(比如一个按钮对象),这时相应的代码将会被原创 2011-06-18 16:06:00 · 1132 阅读 · 0 评论 -
Cocoa 解析xml文件
苹果提供了解析xml的类,NSXMLParser及其代理NSXMLParserDelegate 展示一段事例代码,自己的小应用中用到的: NSString *filePath = [[NSBundle mainBundle] pathForResource:@"question" ofType:@"xml"]; NSData *xmlData = [[NSData alloc原创 2011-06-21 00:40:00 · 2037 阅读 · 0 评论 -
iPhone 检查网络状态
iPhone应用中,如果需要使用网络,那么必须先检查网络状态,否则苹果公司的app store审查是不会通过的。 当然,检查的代码不是很复杂,参考书上的一段即可: - (BOOL) connectedToNetwork{ // Create zero addy struct sockaddr_in zeroAddress; bzero(&zeroAddr原创 2011-06-26 21:44:00 · 3152 阅读 · 0 评论 -
iPhone 本地化支持
昨天晚上为我的KeyManager添加了英文用户的支持本来的程序中,只有中文界面,但是这样基本上等于放弃了欧美市场正好这几天准备发布一个更新版本,借机支持英文iPhone开发中的本地化支持的思路是这样的:程序本身有一个基础语言,程序运行时会根据设备当前的语原创 2011-08-02 14:17:10 · 8618 阅读 · 3 评论