02 2014 档案

摘要:1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用到的就这2个文件,添加到工程中。 备用地址:http://www.cocoachina.com/bbs/job.php?action-download-pid-135286-tid-18111-aid-11143.html- Lv2.工程中添加libicucore.dylib frameworks。3.现在所有的nsstring对象就可以调用RegexKitLite中的方法了。NSString *email = @”kkk@aaa.com”;[email isMatchedByRegex:@"\\b([a 阅读全文
posted @ 2014-02-27 16:39 yulang 阅读(221) 评论(0) 推荐(0) 编辑
摘要:IOS中的UITextView和UITextField都是文本输入控件并都能够调用系统键盘。本次特酷把介绍UITextView和UITextField的区别。简单来说,UITextView和UITextField最大的区别是:UITextView支持多行输入,而UITextField只能单行输入。实际上,UITextView继承自UIScrollView,UITextField继承自UIView[UIControl]。在使用上我们完全可以把UITextView看作是UITextField的加强版。下面是他们各自的代理协议,可以看出,他们的代理协议很相似,事实上用法也相通。折叠展开C/C++ C 阅读全文
posted @ 2014-02-27 11:00 yulang 阅读(890) 评论(0) 推荐(0) 编辑
摘要:在iOS应用中,UITableView应该是使用率最高的视图之一了。iPod、时钟、日历、备忘录、Mail、天气、照片、电话、短信、Safari、App Store、iTunes、Game Center⋯几乎所有自带的应用中都能看到它的身影,可见它的重要性。然而在使用第三方应用时,却经常遇到性能上的问题,普遍表现在滚动时比较卡,特别是table cell中包含图片的情况时。实际上只要针对性地优化一下,这种问题就不会有了。有兴趣的可以看看LazyTableImages这个官方的例子程序,虽然也要从网上下载图片并显示,但滚动时丝毫不卡。下面就说说我对UITableView的了解。不过由于我也是初学 阅读全文
posted @ 2014-02-27 10:32 yulang 阅读(227) 评论(0) 推荐(0) 编辑
摘要:今天给大家带来一个简单的登陆验证,用的是ASIHttpRequest 这个开源类库,使用的方法很简单,从网上下载下来以后,添加到项目中,并添加一下这些框架。下面上代码[cpp] view plaincopyprint?// //ViewController.h //NetDemo // //Createdbyzhouhaifengon12-6-6. //Copyright(c)2012年zhouhaifeng.Allrightsreserved. // #import #import"ASIHttpHeaders.h" #import"CJSONDeseriali 阅读全文
posted @ 2014-02-26 11:06 yulang 阅读(358) 评论(0) 推荐(0) 编辑
摘要:一、个人中心未登录方法: 加判断登录状态直接打开个人中心页面4,否则出现上面引导登录或注册入口显示代码如下:[cpp] view plaincopyprint?#pragmamarkaddView -(void)addView{//背景图 [self.viewsetBackgroundColor:[UIColorwhiteColor]];UIImageView*loginImgTips=[[UIImageViewalloc]initWithImage:[UIImageimageNamed:@"login_tips.png"]];loginImgTips.frame=CGRe 阅读全文
posted @ 2014-02-26 10:56 yulang 阅读(6893) 评论(0) 推荐(0) 编辑
摘要:IOS 入门开发之创建标题栏UINavigationBar的使用 IOS 开发有关界面的东西不仅可以使用代码来编写,也可以使用Interface Builder可视化工具来编写。今天有个朋友问我这两个有什么区别,首先说 说IB ,使用它编辑出来的控件其实底层还是调用代码只是苹果封装出来让开发者更好使用而已。它的优点是方便、快捷最重要的是安全,因为控件的释放它会帮我们完成 不用手动释放。缺点是多人开发不好维护,就好比谁写的IB谁能看懂,别人看的话就比较费劲,不利于代码的维护。两种方式各有利弊,不过我个人还是比较喜欢 纯代码,因为任何程序语言,或者任何脚本语言,代码和可视化工具比起来永远是最底层的 阅读全文
posted @ 2014-02-26 09:36 yulang 阅读(338) 评论(0) 推荐(0) 编辑
摘要:下面记一下怎样通过代码的方式为选项卡添加视图。1、创建一个基于Empty Application的项目2、创建两个新类,基类选择UIViewController,勾选With XIB for user interface分别命名为"OneController'和"TwoController",3、分别更改OneController.xib和TwoController.xib文件的view背景颜色,便于区分4、在AppDelegate.m文件中的 - (BOOL)application:(UIApplication *)application didFini 阅读全文
posted @ 2014-02-26 09:16 yulang 阅读(312) 评论(0) 推荐(0) 编辑
摘要:API接口文档。https://developer.apple.com/library/mac/#documentation/Carbon/Reference/CoreText_Framework_Ref/_index.htmlCoreText 框架中最常用的几个类:CTFontCTFontColl... 阅读全文
posted @ 2014-02-25 16:39 yulang 阅读(387) 评论(0) 推荐(0) 编辑
摘要:Core Data数据持久化是对SQLite的一个升级,它是ios集成的,在说Core Data之前,我们先说说在CoreData中使用的几个类。 (1)NSManagedObjectModel(被管理的对象模型) 相当于实体,不过它包含 了实体间的关系 (2)NSManagedObjec... 阅读全文
posted @ 2014-02-25 15:43 yulang 阅读(259) 评论(0) 推荐(0) 编辑
摘要:SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库。iOS SDK很早就支持了SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。但是,原生的SQLite API在使用上相当不友好... 阅读全文
posted @ 2014-02-25 15:38 yulang 阅读(245) 评论(0) 推荐(0) 编辑
摘要:SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效。SQLite3使得不必将每个对象都加到内存中。基本操作:(1)打开或者创建数据库sqlite3 *database;int result = sqlite3_open("/path/databaseFile", &databa... 阅读全文
posted @ 2014-02-25 15:28 yulang 阅读(342) 评论(0) 推荐(0) 编辑
摘要:https://github.com/AFNetworking/AFNetworking与asi-http-request功能类似的网络库,不过是基于NSURLConnection和NSOperation的,同样支持iOS与MacOS双平台。目前的更新比较频繁,适合新项目使用,而且使用起来也更简单。... 阅读全文
posted @ 2014-02-25 14:33 yulang 阅读(488) 评论(0) 推荐(0) 编辑
摘要:2013-03-25 17:41 261人阅读 评论(0) 收藏 举报[cpp] view plaincopyprint?// #import #import"sqlite3.h" @interfaceSqllib:NSObject{sqlite3*m_sql;NSString*m_dbName;}... 阅读全文
posted @ 2014-02-25 11:35 yulang 阅读(388) 评论(0) 推荐(0) 编辑
摘要:http://apple.xdnice.com/content/applenews/2013/0614/142195.html (ios7 ui风格)http://blog.csdn.net/chenyong05314/article/details/17299545 (ios7适配)http://blog.csdn.net/rhljiayou/ (优秀ios开发博客)http://blog.csdn.net/totogo2010 (荣志芳的博客)http://blog.csdn.net/tonny_guan (关东升)http://onevcat.com (one dev)http://ww 阅读全文
posted @ 2014-02-21 17:27 yulang 阅读(574) 评论(0) 推荐(0) 编辑
摘要:这些东西有点烦,有点无聊。如果要去C++面试就看看吧。几年前网上搜索的。刚才看到,就整理一下,里面有些被我改了,感觉之前说的不对或不完善。1.求下面函数的返回值( 微软)intfunc(x){intcountx=0;while(x){countx++;x=x&(x-1);}returncountx;}假定x = 9999。 答案:8思路:将x转化为2进制,看含有的1的个数。2.什么是“引用”?申明和使用“引用”要注意哪些问题?答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变 阅读全文
posted @ 2014-02-21 13:41 yulang 阅读(271) 评论(0) 推荐(0) 编辑
摘要:题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下:structListNode{int m_nKey; ListNode* m_pNext;};分析:这是一道广为流传的微软面试题。由于这道题能够很好的反应出程序员思维是否严密,在微软之后已经有很多公司在面试时采用了这道题。为了正确地反转一个链表,需要调整指针的指向。与指针操作相关代码总是容易出错的,因此最好在动手写程序之前作全面的分析。在面试的时候不急于动手而是一开始做仔细的分析和设计,将会给面试官留下很好的印象,因为在实际的软件开发中,设计的时间总是比写代码的时间长。与其很快地写出一段漏洞百出的代码,远不如用 阅读全文
posted @ 2014-02-20 22:55 yulang 阅读(1750) 评论(0) 推荐(0) 编辑
摘要:#include#includemain(){ char str[100]; int n; printf("input string:"); gets(str); n=strlen(str); for(;n>=0;n--)printf("%c",str[n]); getch()();} 阅读全文
posted @ 2014-02-20 22:50 yulang 阅读(197) 评论(0) 推荐(0) 编辑
摘要:简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。void SelectSort(RecordType r[], int length) /*对记录数组r做简单选择排序,length为待排序记录的个数*/{for ( i=1 ; i< length; i++) //n-1趟排序{int index=i; //假设index是最小的for ( j= 阅读全文
posted @ 2014-02-20 22:42 yulang 阅读(166) 评论(0) 推荐(0) 编辑
摘要:一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:⒈ 从第一个元素开始,该元素可以认为已经被排序⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置⒌ 将新元素插入到下一位置中⒍ 重复步骤2~5如果比较操作的代价比交换操作大的话,可以采用二分查找法来减少比较操作的数目。该算法可以认为是插入排序的一个变种,称为二分查找排序。void insertion_sort(int array[],int first,int last){int i,j;int temp 阅读全文
posted @ 2014-02-20 22:37 yulang 阅读(134) 评论(0) 推荐(0) 编辑
摘要:1 比较相邻的元素。如果第一个比第二个大,就交换他们两个。2 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数3 针对所有的元素重复以上的步骤,除了最后一个4 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较#include #define SIZE 8void bublle_sort(int a[],int n) //n为数组a的元素个数{int i,j,temp;for(j=0;j a[i+1]) //数组元素大小按升序排列{temp = a[i];a[i] = a[i+1];a[i+1] = temp;}}int mai 阅读全文
posted @ 2014-02-20 22:23 yulang 阅读(190) 评论(0) 推荐(0) 编辑
摘要:快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]赋给A[i];4)从i开始向后搜索, 阅读全文
posted @ 2014-02-20 22:19 yulang 阅读(154) 评论(0) 推荐(0) 编辑
摘要:C++基础遗漏:new和delete我记得当年学习C++基础的时候,老师曾经告诉我们:一般来说new和delete要成对出现,在使用完new申请的内存后要马上释放。我相信持这种说法的人不止我们老师一个人,养成良好的内存使用习惯固然重要,但如果因此就认为new和delete必须成对出现,使用完new得到的空间后就要马上用delete释放的话,就有点“大材小用”了,相信C++提供这一由用户控制的内存控制方法也不是只限于如此的使用方法。正确灵活的,或许也是“高级”的使用方法,是在A处使用new申请一块内存,用一个指针指pA向它,之后在B处用指针pB指向pA所指向的空间,释放指针pA本身,接着释放pB 阅读全文
posted @ 2014-02-20 21:32 yulang 阅读(202) 评论(0) 推荐(0) 编辑
摘要:在C#、Java這種managed語言,因為有garbage collection,所以完全不用考慮free()或delete,但在C/C++,有時候要delete的,有時又不用,到底哪些改delete?哪些不用delete呢?簡單的說,若要使用用到heap,就要手動去delete或free()!!那什麼時候會用到heap呢?當你打算使用dynamic allocation時!!更白話一點,就是你用new或malloc()時,就必須自己手動去delete或free()!!為什麼用到heap就必須手動處理呢?一般我們建立物件,如1inti;2Foofoo;都是建在stack上,回想我們學資料結構 阅读全文
posted @ 2014-02-20 21:31 yulang 阅读(238) 评论(0) 推荐(0) 编辑
摘要:objective-c中,当一个类使用到另一个类时,并且在类的头文件中需要创建被引用的指针时,如下面代码:A.h文件C代码#import"B.h"@interfaceA:NSObject{ B*b; } @end为了简单起见:A类是引用类,B类是被引用类,这里先不考虑A类的实现文件。通常引用一个类有两种办法: 一种是通过#import方式引入;另一种是通过@class引入;这两种的方式的区别在于:1、#import方式会包含被引用类的所有信息,包括被引用类的变量和方法;@class方式只是告诉编译器在A.h文件中B *b只是类的声明,具体这个类里有什么信息,这里不需要知道, 阅读全文
posted @ 2014-02-19 22:06 yulang 阅读(502) 评论(0) 推荐(0) 编辑
摘要:File 文件Edit 编辑View视图Navigate导航Editor编辑Product产品Window 窗口Help帮助File 文件New新建New Tab 新标签New Window 新窗口New File 新文件New Target… 新目标New Project… 新项目New Workspace…新的工作区New Group新组New Group from Selection从选择中建立新组Open打开Open Recent 打开最近的Open Quickly 快速打开Close Window关闭窗口Close Tab关闭标签Close "filename.-" 阅读全文
posted @ 2014-02-19 20:14 yulang 阅读(641) 评论(0) 推荐(0) 编辑
摘要:在自定义协议的头文件 .h中@protocol NSDelegate @optional //可选- (void)OnOption:(NSString *)pStr;@required //必须- (void)OnRequired:(NSString *)pStr;@end@interface NSClass :NSObjectid delegate;@end@property(assian) id delegate;在自定义协议的实现文件.m中@synthesize delegate;在制定协议实现文件中调用协议如果委托方法是可实现的,可以在调用委托方法的用respondsToSelecto 阅读全文
posted @ 2014-02-19 09:01 yulang 阅读(950) 评论(0) 推荐(0) 编辑
摘要:copy:建立一个索引计数为1的对象,然后释放旧对象 对NSString对NSString 它指出,在赋值时使用传入值的一份拷贝。拷贝工作由copy方法执行,此属性只对那些实行了NSCopying协议的对象类型有效。更深入的讨论,请参考“复制”部分。retain:释放旧的对象,将旧对象的值赋予输入对... 阅读全文
posted @ 2014-02-19 08:45 yulang 阅读(269) 评论(0) 推荐(0) 编辑
摘要:编辑TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通... 阅读全文
posted @ 2014-02-18 23:01 yulang 阅读(250) 评论(0) 推荐(0) 编辑
摘要:iOS sqlite数据库操作。步骤是:先加入sqlite开发库libsqlite3.dylib,新建或打开数据库,创建数据表,插入数据,查询数据并打印1、新建项目sqliteDemo,添加使用sqlite的库libsqlite3.dylib2、sqlite 的方法sqlite3 *db, 数据库句柄,跟文件句柄FILE很类似sqlite3_stmt *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句sqlite3_open(), 打开数据库,没有数据库时创建。sqlite3_exec(), 执行非查询的sql语句Sqlite3_step(), 在... 阅读全文
posted @ 2014-02-18 22:55 yulang 阅读(243) 评论(0) 推荐(0) 编辑
摘要:http://tergol.blog.163.com/blog/static/170695028201081571326731/ 阅读全文
posted @ 2014-02-18 08:03 yulang 阅读(111) 评论(0) 推荐(0) 编辑
摘要:今天要分享的是IOS开发中一个使用率非常高的一个控件-------UITableView,这两天正在使用tableview做信息的显示,在写代码时对tableview和tableviewcell的几种样式一直分不清楚,今天我详细的研究了一下,下面就跟大家分享一下:一、系统自己的UITableView样式有两种:1.UITableViewStylePlain: Plain样式的是方形的,充满你给的view.frame坐标。2.UITableViewStyleGrouped: Grouped样式主要是以圆角形显示。跟iphone自带的通讯录编辑页面类似。二、系统自己的UITableVie... 阅读全文
posted @ 2014-02-18 07:56 yulang 阅读(177) 评论(0) 推荐(0) 编辑
摘要:UItextField通常用于外部数据输入,以实现人机交互。下面以一个简单的登陆界面来讲解UItextField的详细使用。//用来显示“用户名”的labelUILabel* label1 = [[UILabelalloc] initWithFrame:CGRectMake(15, 65, 70, 30)]; label1.backgroundColor = [UIColorclearColor]; label1.font = [UIFontfontWithName:@"Helvetica-Bold"size:18]; label1.text = @"用户名&qu 阅读全文
posted @ 2014-02-17 23:49 yulang 阅读(192) 评论(0) 推荐(0) 编辑
摘要:9.1 数据持久化概述iOS中可以有四种持久化数据的方式: 属性列表、对象归档、SQLite3和Core Data9.2 iOS应用程序目录结构iOS应用程序运行在Mac os模拟器时候,有一下临时目录模拟器3.1.3为例子:/Users/tony/Library/Application Support/iPhone Simulator/3.1.3/ApplicationsIOS应用程序采用沙盒原理设计,ios每个应用程序都有自己的3个目录(Document,Library,tmp),互相之间不能访问。Documents存放应用程序的数据。Library目录下面还有Preferences和Ca 阅读全文
posted @ 2014-02-17 23:41 yulang 阅读(294) 评论(0) 推荐(0) 编辑
摘要:Objective-C中判断字符串是否包含其他字符串-(BOOL) hasPrefix:(NSString *) astring;检查字符串是否以astring开头;-(BOOL) hasSuffix:(NSString *) astring;检查字符串是否以astring结尾;使用方式:NSString*filename=@"hello,world";if([filename hasPrefix:@"hello"]){...}if([filename hasSuffix:@"world"]){...}如果想知道字符串内的某处是否包含 阅读全文
posted @ 2014-02-17 22:42 yulang 阅读(1357) 评论(0) 推荐(0) 编辑
摘要:wu 阅读全文
posted @ 2014-02-17 17:14 yulang 阅读(114) 评论(0) 推荐(0) 编辑
摘要:定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:(图1 未遵循接口隔离原则的设计) 这个图的意思是:类A依赖接口I中的方法1、方法2、方法3,类B是对类A依赖的实现。类C依赖接口I中的方法1、方法4、方法5,类D是对类C依赖的实现。对于类B和类D来说,虽然他们都存在着用不到的方法(也就 阅读全文
posted @ 2014-02-16 17:44 yulang 阅读(344) 评论(0) 推荐(0) 编辑
摘要:3.1 依赖倒置原则的定义 依赖倒置原则(Dependence Inversion Principle,简称DIP)这个名字看着有点别扭,“依赖”还“倒置”,这到底是什么意思?依赖倒置原则的原始定义是:High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions。翻译过来,包含三层含义:高层模 阅读全文
posted @ 2014-02-16 17:39 yulang 阅读(2943) 评论(0) 推荐(1) 编辑
摘要:肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。定义2:所有引用基类的地方必须能透明地使用其子类的对象。问题由来:有一功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原有功能P1与新功能P2组成。新功能P由类A的子类B来完成 阅读全文
posted @ 2014-02-16 17:33 yulang 阅读(334) 评论(0) 推荐(0) 编辑
摘要:开发封闭原则(Open-Closed Principle OCP)Software entities(classes,modules,functions etc) should open for extension ,but close for modification. 什么意思呢? 所谓开放封闭原则就是软件实体应该对扩展开发,而对修改封闭。开放封闭原则是所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化,降低耦合,而开放封闭原则正是对这一目标的最直接体现。 开放封闭原则主要体现在两个方面: 对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。 对修改封闭 阅读全文
posted @ 2014-02-16 17:30 yulang 阅读(321) 评论(0) 推荐(0) 编辑
摘要:定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。 说到单一职责原则,很多人都会不屑一顾。因为它太简单了。稍有经验的程序员即使从来没有读过设计模式、从来没有听说过单一职责原则,在设计软件时也会自觉的遵守这一重要原则,因为这是常识。 阅读全文
posted @ 2014-02-16 17:28 yulang 阅读(169) 评论(0) 推荐(0) 编辑
摘要:部分内容摘自《Objective-C基础教程》和互联网引用计数 Cocoa采用了引用计数(reference counting)机制,每一个对象有一个关联的“整数retainCount”用于记录对象的使用情况。对象被引用时retaincount+1,外部环境结束对象的使用后retainCount-1.当retaincount为0的时候,该对象被销毁。 当我们使用alloc、new或者copy的我们需要销毁这个对象。release函数,只是将对象的retainCount值减1,并不是删除对象。当retainCount==0的时候,系统会发给对象一个dealloc消息,另外:千万不要手动... 阅读全文
posted @ 2014-02-16 16:53 yulang 阅读(302) 评论(0) 推荐(0) 编辑
摘要:复制代码SomeObject *obj = [[SomeObject alloc] initWithCenter:centerPoint radius:radius];和复制代码SomeObject *obj =[SomeObject alloc];[obj initWithCenter:centerPoint radius:radius];这两句不是等效的。第二句的执行结果可能返回无效对象。 阅读全文
posted @ 2014-02-16 16:22 yulang 阅读(210) 评论(0) 推荐(0) 编辑
摘要:NSNumberJava代码+(NSNumber*)numberWithInt:(int)value;+(NSNumber*)numberWithDouble:(double)value;-(int)intValue;-(double)doubleValue;NSNumber可以将基本数据类型包装起来,形成一个对象,这样就可以给其发送消息,装入NSArray中等等。NSNumber * intNumber=[NSNumber numberWithInt:100];NSNumber *floatNumber=[NSNUmber numberWithFloat:100.00];int i=[int 阅读全文
posted @ 2014-02-16 16:06 yulang 阅读(637) 评论(0) 推荐(0) 编辑
摘要:上面一篇文章介绍了coredata的有关基本概念,由于大部分是参考别人文章中的内容,所以感觉有点虚,而且估计也是比较难以理解,下面这篇文章通俗一点说说学习coredata后的一些理解,然后给出一个简单的demo,有错漏的地方,欢迎读者指正。其实与coredata有关的有几个概念:数据表 --–> Entity (You usually define entities in a managed object model usingthe data modeling tool in Xcode).表格的记录 --> NSManagedObject (一个表记录就是一个NSManaged 阅读全文
posted @ 2014-02-16 13:41 yulang 阅读(245) 评论(0) 推荐(0) 编辑
摘要:下面开始学习一下CoreData。Core Data不是一个关系型数据库,也不是关系型数据库管理系统(RDBMS)。Core Data 为数据变更管理、对象存储、对象读取恢复的功能提供了支持。 它可以使用SQLite作为持久化存储的类型。 它本身并不是一个数据库(这点很重要,比如,你可以使用Core Data来记录数据变更,管理数据,但并不能用它向文件内存储数据)。首先简单的介绍一下概念:数据表 --–> Entity (You usually define entities in a managed object model usingthe data modeling tool in 阅读全文
posted @ 2014-02-16 13:39 yulang 阅读(286) 评论(0) 推荐(0) 编辑
摘要:在写sina 微博界面的过程中使用到了cell,那么就是在cell上添加一些控件,但是由于每条微博的内容都是不同的,所以在显示的过程中,出现了内容重叠的问题,其实就是UITableViewCell重用机制的问题。[cpp]view plaincopy-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{staticNSString*CellIdentifier=@"Cell";UITableViewCell*cell=[tableVi 阅读全文
posted @ 2014-02-16 13:37 yulang 阅读(326) 评论(0) 推荐(0) 编辑
摘要:github链接地址MBProgressHUD是一个开源的第三方类库实现了很多种样式的提示框,类似Activity indicator,使用上简单、方便,并且可以对显示的内容进行自定义,功能很强大,很多项目中都有使用到。 MBProgressHUD is an iOS drop-in class that displays a translucent HUD with an indicator and/or labels while work is being done in a background thread. The HUD is meant as a replacement fo.. 阅读全文
posted @ 2014-02-16 13:36 yulang 阅读(375) 评论(0) 推荐(0) 编辑
摘要:首先要弄懂几个基本的概念。一)三个结构体:CGPoint、CGSize、CGRect1. CGPoint[plain]view plaincopy/*Points.*/structCGPoint{CGFloatx;CGFloaty;};typedefstructCGPointCGPoint;看到这个想必你已经懂了,不再解释。2. CGSize[plain]view plaincopy/*Sizes.*/structCGSize{CGFloatwidth;CGFloatheight;};typedefstructCGSizeCGSize;不解释。3.CGRect[plain]view plain 阅读全文
posted @ 2014-02-16 13:29 yulang 阅读(8597) 评论(0) 推荐(1) 编辑
摘要:在写程序的时候发现,iOS下的坐标、位置很容易弄乱,特别是在不同的坐标系统中,必须完成弄明白一些概念才能做相应的变化,例如CoreImage和UIView的坐标系统就截然不同,一个是以屏幕的左上角为原点,一个是以屏幕的左下角为原点。总体上,IOS中包含UIKit坐标系(X轴正方向向右,Y轴正方向向下)和标准的Quartz 2D绘图坐标系(X轴正方向向右,Y轴正方向向上),下面,解释一些相关的概念:一、UIView的bounds属性定义了一个矩形,描述了一个UIView的位置和大小,注意,其参照系统是自身,所以bounds.origin属性默认是(0, 0),而bounds.size的和fram 阅读全文
posted @ 2014-02-16 13:27 yulang 阅读(773) 评论(0) 推荐(0) 编辑
摘要:本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论。请不要将本文的部分或全部内容用于商用,谢谢合作。欢迎转载本文,但是转载请注明本文出处:http://www.onevcat.com/2012/06/arc-hand-by-hand/本文适合人群:对iOS开发有一定基础,熟悉iOS开发中内存管理的Reference Counting机制,对ARC机制有听闻很向往但是一直由于种种原因没有使用的童鞋。本文将从ARC机理入手对这个解放广大iOS开发者的伟大机制进行一个剖析,并逐步引导你开始使用ARC。一旦习惯ARC,你一定会被它的简洁高效所征服。写在开 阅读全文
posted @ 2014-02-16 13:24 yulang 阅读(232) 评论(0) 推荐(0) 编辑
摘要:如果 iPhone 5 把屏幕做大,分辨率跟 iPhone 4 不一样,那以后做 iOS App 怎么处理不同分辨率的问题呢?1 条评论分享按票数排序按时间排序8 个回答赞同11反对,不会显示你的姓名Yop,2年iOS技术累积谢振宇、知乎用户、李力等人赞同题目已经假设了iPhone5的屏幕分辨率(而不是屏幕大小)会变大的情况下,不知道下面那些否决这个前提的算不算离题了...自从iPhone4把屏幕分辨率提升了之后,苹果给开发者提供了一个point的概念,来取代旧的分辨率的概念。它们假定屏幕上的定位和大小是用point来描述的,而iPhone3和iPhone4的屏幕是由相同的point组成的,都 阅读全文
posted @ 2014-02-16 13:20 yulang 阅读(219) 评论(0) 推荐(0) 编辑
摘要:iOS 设备的屏幕尺寸、分辨率及其屏幕边长比例详细情况是怎样的?根据屏幕尺寸和分辨率,ios现在数起来有6个版本。一,3GS;二,4s为代表;三,iphone5;四,ipad2为代表;五,ipad4为代表;六,ipad mini。只是分辨率不一样的情况,如一二或者四五相比,开发时提供两种分辨率就可以了,应用自动识别?只是尺寸不一样的情况,如四六相比,开发时完全没有影响?分辨率以及尺寸都不一样的情况,如二三相比,又如何?----------------------------------------------------------------------------------------- 阅读全文
posted @ 2014-02-16 13:18 yulang 阅读(525) 评论(0) 推荐(0) 编辑
摘要:本教程通过命令行来阐述分布版本控制系统Git的使用。演示系统选取的是Linux(Ubuntu),但是在其他系统上也能功能,例如Windows系统。内容索引1. Git1.1. Git是何方神圣?1.2.重要的术语1.3.索引(stage)2. 安装3. 配置3.1. 用户信息3.2. 高亮显示3.3. 忽略特定的文件3.4. 使用.gitkeep来追踪空的文件夹4. 开始操作Git4.1. 创建内容4.2. 创建仓库、添加文件和提交更改4.3. diff命令和commit修改4.4. Status, Diff和Commit Log4.5.更正提交的信息 - git amend4.6. 删除文件 阅读全文
posted @ 2014-02-16 13:13 yulang 阅读(229) 评论(0) 推荐(0) 编辑
摘要:一,打开SCM在xcode中,点击菜单:File -> Source Control –> Repositories二,连接SVN服务器1,2,配置SVN服务器地址(http://192.168.85.228/svn/repos1)3,输入用户名密码4,配置完成(Root目录表示svn服务器的根目录)三,上传新项目1,点击下边的 ‘Import’ 菜单,然后选择你想上传的项目的根目录这里假设我们选择上传的项目为: demo,则上传结束后,结果如下所示:Note: 这样上传后,你本地的项目,并没有在SVN控制之下,需要执行 四,下载项目 ,覆盖你本地的项目。四,下载项目1,选中你想下 阅读全文
posted @ 2014-02-16 13:10 yulang 阅读(264) 评论(0) 推荐(0) 编辑
摘要:1、Xcode4中苹果有自带的SVN软件------>Organizer------>Repositories2、SVN checkout到本地后,删除本地file,对服务器有影响吗?不会影响服务器,当你执行“svn update”时会zai再次被自动下载;当删除后再执行“svn commit”就会在服务器上也对应删除。3、连接服务器点击file-》repositories-》点击坐下边的“+”-》然后名字及svn服务器的地址,还有type选中subversion然后next等等了。4、Xcode4下,SVN中常用命令Commit提交checkout将服务器上下载到本地(我个正在使 阅读全文
posted @ 2014-02-16 13:09 yulang 阅读(330) 评论(0) 推荐(0) 编辑
摘要:Xcode 是开发人员建立 Mac OS X 应用程序的最快捷方式,也是利用新的苹果电脑公司技术的最简单的途径,而SVN是版本控制工具,那么Xcode SVN又是什么呢?如何配置Xcode SVN?Xcode SVN配置方法 Mac自带svn,所以我们就不需要下载了,稍稍修改一下subversion配置就能使用。大大教了两种方法:第一步,配置 Subversion Leopard中自带了SVN,但Xcode的项目文件中,并不是所有文件都适于加入SVN中进行管理,比如编译后的文件和编译过程中产生的文件,这些文件不属于源代码,应该告诉svn忽略掉,方法: 编辑 ~/.subversion... 阅读全文
posted @ 2014-02-16 13:07 yulang 阅读(473) 评论(0) 推荐(0) 编辑
摘要:Xcode底部的小黑盒是我们调试时的好朋友,它可以输出日志信息、错误信息以及其他有用的东西来帮你跟踪错误,除了可以看到日志直接输出的信息外,我们编程过程中也可以在某些断点停留,来检查app的多个方面。AD:2013云计算架构师峰会课程资料下载为什么你的数组包含3个项目而不是5个?为什么你的游戏运行缓慢?这些都跟调试有关,调试是开发过程中必不可少的一部分。本文所列举了一些重要的调试功能(当然并不全面)可以帮你用更少的时间来解决bug问题。本文内容主要包括3个方面:使用console检查app状态进行日志记录,并熟练的驾驭NSLog使用对象的生命周期来跟踪内存的使用。使用Console检查app状 阅读全文
posted @ 2014-02-16 13:00 yulang 阅读(311) 评论(0) 推荐(0) 编辑
摘要:简介在IPhone程式开发中,记忆体泄漏(内存泄漏)是个很容易发生的情况,因为IPhone必须自行作记忆体管理。现在的开发者,大多习惯用的。NET或Java的等有垃圾回收机制的开发语言来作开发,因此可能较不习惯自行释放內存。背景从我首次接触的Xcode开发IPhone程式已有三个半月,这段时间中,我看过不少如何找出内存泄漏的文章,可是由于基本观念不够好,绕了不少远路。在IPhone程式开发中,使用NSLog直接在控制台印出retainCount也是一个检视內存泄漏的方法,但是的XCode提供了更方便的泄漏工具供开发者使用。介于自身观念较差,因此刚开始使用泄漏的时候,也花了不少时间走过弯路,因此 阅读全文
posted @ 2014-02-16 12:58 yulang 阅读(587) 评论(0) 推荐(0) 编辑
摘要:一、概述1.掌握调试技巧,调试技术最基本,最重要的调试手段包括:单步跟踪,断点,变量观察等。单步跟踪(Step)所谓单步跟踪是指一行一行地执行程序,每执行一行语句后就停下来等待指示,这样你就能够仔细了解程序的执行顺序,以及当时的各种状况。断点(Breakpoint)断点是调试中非常重要的一个手段。由于在执行到某些代码前需要执行许多其它代码,不可能用单步跟踪一条一条执行过来,这时只要在需要暂停的地方设置一个断点,然后让程序运行,当执行到这个断点位置时不需要用户干预就会暂停并返回集成调试程序.断点必须位于可执行代码行上,凡设置在注释,空白行,变量说明上的都是无效的。另外,断点既可以在设计状态下设置 阅读全文
posted @ 2014-02-16 12:56 yulang 阅读(438) 评论(0) 推荐(0) 编辑
摘要:4.写一个setter方法用于完成@property (nonatomic,retain)NSString *name,写一个setter方法用于完成@property(nonatomic,copy)NSString *name [cpp] view plaincopyprint? - (void) 阅读全文
posted @ 2014-02-15 21:53 yulang 阅读(338) 评论(0) 推荐(0) 编辑
摘要:介绍:Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统。这建立在任务并行执行的线程池模式的基础上的。它首次发布在Mac OS X 10.6 ,iOS 4及以上也可用。设计:GCD的工作原理是:让程序平行排队... 阅读全文
posted @ 2014-02-15 18:58 yulang 阅读(220) 评论(0) 推荐(0) 编辑
摘要:使用 NSOperation的方式有两种,一种是用定义好的两个子类:NSInvocationOperation 和 NSBlockOperation。另一种是继承NSOperation如果你也熟悉Java,NSOperation就和java.lang.Runnable接口很相似。和Java的Runn... 阅读全文
posted @ 2014-02-15 18:57 yulang 阅读(165) 评论(0) 推荐(0) 编辑
摘要:1、简介:1.1 iOS有三种多线程编程的技术,分别是:1.、NSThread2、Cocoa NSOperation(iOS多线程编程之NSOperation和NSOperationQueue的使用)3、GCD全称:Grand Central Dispatch(iOS多线程编程之Grand Cent... 阅读全文
posted @ 2014-02-15 18:56 yulang 阅读(264) 评论(0) 推荐(0) 编辑
摘要:KVO一,概述KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。二,使用方法系统框架已经支持KVO,所以程序员在使用的时候非常简单。1. 注册,指定被观察者的属性,2. 实现回调方法3. 移除观察三,实例:假设一个场景,股票的价格显示在当前屏幕上,当股票价格更改的时候,实时显示更新其价格。1.定义DataModel,[cpp]view plaincopy@interfaceStockData:NSObject{NSString*stockNam 阅读全文
posted @ 2014-02-15 18:45 yulang 阅读(274) 评论(0) 推荐(0) 编辑
摘要:今天突然才之间才意识到NSTimer这样的运行方式,是在多线程中实现的循环还是在主线程中去实现的呢。当然不可能是在主线程中的while那么简单,那样什么都干不了,简单看了下NSTimer是以同步方式运行的。时间到了,消息发出后,ontimer的函数是在主线程上调用的。我们会经常看到这样的代码:- (... 阅读全文
posted @ 2014-02-15 18:34 yulang 阅读(282) 评论(0) 推荐(0) 编辑
摘要:一.线程概述有些程序是一条直线,起点到终点;有些程序是一个圆,不断循环,直到将它切断。直线的如简单的Hello World,运行打印完,它的生命周期便结束了,像昙花一现那样;圆如操作系统,一直运行直到你关机。一个运行着的程序就是一个进程或者叫做一个任务,一个进程至少包含一个线程,线程就是程序的执行流... 阅读全文
posted @ 2014-02-15 18:33 yulang 阅读(274) 评论(0) 推荐(0) 编辑
摘要:1到底这个序列化有啥作用?面向对象的程序在运行的时候会创建一个复杂的对象图,经常要以二进制的方法序列化这个对象图,这个过程叫做Archiving. 二进制流可以通过网络或写入文件中(来源于某教材的一段话)本人的理解是当你于写数据需要本地存储时,即将你的数据写到硬盘上的时候,你就必须对他进行序列化,转换成二进制文件,从而便于在磁盘上的读写,同理在取出的时候必须将其在反序列化,这样才能将数据读出来,就好比加密和揭秘的过程。2 为什么我将数据写到plist 中的时候,也是存储到本地的磁盘上,但是我就没有序列化啊?大家有没有发现,其实plist 的数据是类型是有限制的,就那么几种特定的数据类型,,ns 阅读全文
posted @ 2014-02-15 18:03 yulang 阅读(360) 评论(0) 推荐(0) 编辑
摘要:assign: 简单赋值,不更改索引计数copy: 建立一个索引计数为1的对象,然后释放旧对象retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1Copy其实是建立了一个相同的对象,而retain不是:比如一个NSString对象,地址为0×1111,内容为@”STR”Copy到另外一个NSString之 后,地址为0×2222,内容相同,新的对象retain为1, 旧有对象没有变化retain到另外一个NSString之 后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1也就是说,retain是指针拷贝,cop 阅读全文
posted @ 2014-02-15 17:26 yulang 阅读(312) 评论(0) 推荐(0) 编辑
摘要:阅读本文之前首先了解Copy与Retain的区别: Copy是创建一个新对象,Retain是创建一个指针,引用对象计数加1。 Copy属性表示两个对象内容相同,新的对象retain为1,与旧有对象的引用计数无关,旧有对象没有变化。copy减少对象对上下文的依赖。 Retain属性表示两个对象地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1也就是说,retain是指针拷贝,copy是内容拷贝。 当然在ios中并不是所有的对象都支持copy,mutableCopy,遵守NSCopying 协议的类可以发送copy消息,遵守NSMutableCopying 协议的... 阅读全文
posted @ 2014-02-15 17:20 yulang 阅读(780) 评论(0) 推荐(0) 编辑
摘要:一,retain, copy, assign区别1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b。此时a 和b指向同一块内存,请问当a不再需要这块内存,能否直接释放它?答案是否定的,因为a并不知道b是否还在使用这块内存,如果a释放了,那么b在使用这块内存的时候会引起程序crash掉。2. 了解到1中assign的问题,那么如何解决?最简单的一个方法就是使用引用计数(reference counting),还是上面的那个例子,我们给那块内存设一个引用计数,当内存被分配并且赋值给a时,引用计数是1。当把a 阅读全文
posted @ 2014-02-15 17:03 yulang 阅读(455) 评论(0) 推荐(0) 编辑
摘要:初步写一些自己对于lazyload的看法吧。这篇文章主要针对普通view,对于image相关的的懒加载,准备过几天研究一下在写。懒加载,又称为延迟加载。通常用法,你有一个UITextField类型的property,简单定义为userNameTextField,但是你不在初始化方法里为其alloc/init,它就只是一个指针,不会占用内存。只是加载到你预想加载到的View上。如:[self addSubview:self.userNameTextField];//其中self为view,.userNameTextField为你声明的属性名字。显而易见的是,以上的指定是在view初始化的时候完成 阅读全文
posted @ 2014-02-15 16:30 yulang 阅读(210) 评论(0) 推荐(0) 编辑
摘要:单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。1.单例模式的要点: 显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。2.单例模式的优点: 1.实例控制:Singleton 会阻止其他对象实例化其自己的 Singleton 对象的副本,从而确保所有对象都访问唯一实例。 2.灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程IOS中的单例模式 在objective-c中要实现一个单例类,至少需要做以下四个步骤: 1、为单例对象实... 阅读全文
posted @ 2014-02-15 16:03 yulang 阅读(194) 评论(0) 推荐(0) 编辑
摘要:一、消息推送原理:在实现消息推送之前先提及几个于推送相关概念,如下图1-1:1-11、Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]);2、APNS:Apple Push Notification Service[苹果消息推送服务器];3、iPhone:用来接收APNS下发下来的消息;4、Client App:IOS设备上的应用程序,用来接收iphone传递APNS下发的消息到制定的一个客户端app[消息的最终响应者];上图可以分为三个阶段:阶段一:Provider[服务端]把要发 阅读全文
posted @ 2014-02-15 15:23 yulang 阅读(232) 评论(0) 推荐(0) 编辑
摘要:iOS 7发布了,适配问题来了,开发者都忙起来了。先记一个iOS7 的几个特点:1.坐标:以屏幕左上角为原点(iOS7以前在状态栏或者导航条下)2.UIScrollView(包括其子类,比如UITableView):会自动在顶部和底部预留一些空白(因为滚动经过半透明导航条或者tabbar下面,需要能隐约看到的效果),是否预留空白可以由UIViewController的automaticallyAdjustsScrollViewInsets的这个属性控制(默认YES,表示预留空白)。上面这些只要你用iOS开发,就能发现。最近遇到一个问题:在项目中一个控制器中有一个瀑布流和一个table,发现瀑布 阅读全文
posted @ 2014-02-15 15:00 yulang 阅读(170) 评论(0) 推荐(0) 编辑
摘要:是第一篇: 1.Difference between shallow copy and deep copy?
浅复制和深复制的区别?
答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身。
深层复制:复制引用对象本身。
意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说, 阅读全文
posted @ 2014-02-15 14:57 yulang 阅读(342) 评论(0) 推荐(0) 编辑
摘要:51.UIscrollVew用到了什么设计模式?还能再foundation库中找到类似的吗?(答案众多,不知道哪个是对的~~) 模板(Template)模式,所有datasource和delegate接口都是模板模式的典型应用, 组合模式composition,所有的containerview都用了 阅读全文
posted @ 2014-02-15 14:56 yulang 阅读(287) 评论(0) 推荐(0) 编辑
摘要:ios5 自定义导航条问题在ios5之前的系统中,可以通过定义导航条类别的方式自定义导航条:@implementation UINavigationBar (CustomImage)- (void)drawRect:(CGRect)rect { // Drawing code UIImage *image = [[UIImage imageNamed:@"header.png"] retain]; [image drawInRect:CGRectMake(0, 0,self.frame.size.width , self.frame.size.height)]; [im.. 阅读全文
posted @ 2014-02-15 13:45 yulang 阅读(669) 评论(0) 推荐(0) 编辑
摘要:导航栏的按钮,右边的按钮是可以自己随意添加的。但左边的返回按钮怎么定制?你会说,添加一个自己的按钮呗!你可以试试看,这样行不行。正确的答案是重载UINavigationController类的pushViewController:animated方法。#import @interface MyNavigationController: UINavigationController {}@end#import "MyNavigationController.h"@implementation MyNavigationController-(void)popself{ [sel 阅读全文
posted @ 2014-02-15 13:43 yulang 阅读(594) 评论(0) 推荐(0) 编辑
摘要:一.键盘通知当文本View(如UITextField,UITextView,UIWebView内的输入框)进入编辑模式成为first responder时,系统会自动显示键盘。成为firstresponder可能由用户点击触发,也可向文本View发送becomeFirstResponder消息触发。当文本视图退出first responder时,键盘会消失。文本View退出first responder可能由用户点击键盘上的Done或Return键结束输入触发,也可向文本View发送resignFirstResponder消息触发。当键盘显示或消失时,系统会发送相关的通知:UIKeyboard 阅读全文
posted @ 2014-02-15 13:39 yulang 阅读(782) 评论(0) 推荐(0) 编辑
摘要:上篇文章介绍了如何用UITableView显示表格,并讲了几种UITableViewCell的风格。不过有时候我们需要自己定义 UITableViewCell的风格,其实就是向行中添加子视图。添加子视图的方法主要有两种:使用代码以及从.xib文件加载。当然后一种方法比较直 观。我们这次要自定义一个Cell,使得它像QQ好友列表的一行一样:左边是一张图片,图片的右边是三行标签:当然,我们不会搞得这么复杂,只是有点意思就行。1、运行Xcode 4.2,新建一个Single View Application,名称为Custom Cell:2、将图片资源导入到工程。为此,我找了14张50×5 阅读全文
posted @ 2014-02-15 13:37 yulang 阅读(558) 评论(0) 推荐(0) 编辑
摘要:通过继承UITableViewCell来自定义cell1、创建一个空的项目、命名:2、创建一个UITableViewController 并且同时创建xib:3、设置AppDelegate.m中window的根控制器为刚刚创建的TableViewController:[cpp]view plaincopyprint?-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{self.window=[[UIWindowalloc]initWith 阅读全文
posted @ 2014-02-15 13:35 yulang 阅读(606) 评论(0) 推荐(1) 编辑
摘要:在用到UITableVIew的时候,经常会自定义每行的Cell在IOS控件UITableView详解中的下面代码修改部分代码就可以实现自定义的Cell了[cpp]view plaincopy-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath自定义代码:[cpp]view plaincopystaticNSString*CellWithIdentifier=@"Cell";UITableViewCell*cell=[tableView 阅读全文
posted @ 2014-02-15 13:32 yulang 阅读(460) 评论(0) 推荐(0) 编辑
摘要:登录功能是我在湖畔做的第一个需求。当时PD给我的草图和下图类似:(图片来自知乎iOS客户端登录界面)不过需求中要求用户名或者密码错误时,输入框要抖动(类似Mac登录密码错误的抖动效果)。如果实现上图的UI布局,那么输入框抖动是上下单元格独立抖动还是整体抖动?独立抖动:会出现上下单元格边界不齐的断裂效果,破坏美感。整体抖动:只是用户名错误,密码框为什么抖动?给用户的提示不清晰。我个人不希望给用户不友好的信息,所以我做成了下面的效果:由于我做的效果和PD想要的不一致,所以还产生了一番讨论。为此,不得不向PD普及一下网站登录检查的基本流程,让他知道会先检查用户名是否存在,才会进一步判断用户名和密码是 阅读全文
posted @ 2014-02-15 13:15 yulang 阅读(337) 评论(0) 推荐(0) 编辑
摘要:通常,移动App的注册功能通常采用手机号码注册或者邮箱帐号注册。不过在国内这样隐私堪忧的环境下,需要手机号来注册会流失不少用户。即便是新浪微博这样的应用,需要绑定手机号也令我不信任。除非是像淘宝、支付宝这样需要手机号来提高安全等级的服务,才能弱化用户的心理障碍。首先,看下手机号码注册。(注册湖畔)对于手机号码输入框,我们当然要默认使用UIKeyboardTypeNumberPad类型键盘。不过对于越狱用户,如果装了其它输入法,则有可能使用其它类型键盘输入非数字字符。对此,我们在客户端最好进行过滤和检查。因为客户端如果发送了包含非数字字符的电话号码给服务端进行校验,是没有意义且浪费流量的。在用户 阅读全文
posted @ 2014-02-15 13:13 yulang 阅读(412) 评论(0) 推荐(0) 编辑
摘要:toolbar除了可以和navigationController一起用之外,也可以独立用到view里。工具栏UIToolbar – 一般显示在底部,用于提供一组选项,让用户执行一些功能,而并非用于在完全不同的UI界面之间切换;在不同 UI 界面切换,是选项卡 Tab Bar负责的。 1 // 2 // TWFXToolBarViewController.m 3 // DemoToolBar 4 // 5 // Created by Lion User on 13-1-19. 6 // Copyright (c) 2013年 Lion User. All rights res... 阅读全文
posted @ 2014-02-15 13:07 yulang 阅读(426) 评论(0) 推荐(0) 编辑
摘要:当你在seachBar中输入字母之前的时候,只是用鼠标选中searchBar的时候,如图终端输出截图如下:(这个时候调用先shouldBeginEditing,之后调用didBeginEditing,)当你希望选中UISearchBar的时候,键盘自动调用加载到界面,你需要将下面函数的返回值设置为YES;- (BOOL)searchBarShouldBeginEditing:(UISearchBar*)searchBar { NSLog(@"shouldBeginEditing"); returnYES;}当你在seachBar中输入字母Dditring的时候,如图:终端显 阅读全文
posted @ 2014-02-15 13:05 yulang 阅读(223) 评论(0) 推荐(0) 编辑
摘要:作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式。有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSON格式化校验(点击打开链接)。此网站不仅可以检测Json代码中的错误,而且可以以视图形式显示json中的数据内容,很是方便。从IOS5开始,APPLE提供了对json的原生支持(NSJSONSerialization),但是为了兼容以前的ios版本,可以使用第三方库来解析Json。本文将介绍TouchJson、 SBJson 、JSONKit 和 iOS5所支持的原生的json方法,解析国家气象局API,Tou 阅读全文
posted @ 2014-02-15 13:00 yulang 阅读(340) 评论(0) 推荐(0) 编辑
摘要:iPhone中两种XML解析方式NSXMLParser和GDataXMLNode是本文要介绍的内容,很详细的介绍了NSXMLParser和GDataXMLNode这两种方式,常用的解析XML的方式分为两种,它们基于不同的API: 1.Tree-basedAPI:这种API的处理方式是将XML的结构看成是树,然后把树的各部分看成一个对象来处理,这就是我们说的DOM(Document ObjectModel)方式。在iPhone的SDK里包含了一个libxml2的框架(Framework)就能进行DOM解析方式。Google的GDataXML也是基于libxml2的,因此在使用GDataXML之. 阅读全文
posted @ 2014-02-15 12:58 yulang 阅读(185) 评论(0) 推荐(0) 编辑
摘要:ASIHTTPRequest框架是优秀的第三方Objective-C的HTTP框架,支持Mac OS X和iOS下的HTTP开发。一、ASIHTTPRequest框架的安装和配置(1)首先要在项目工程中导入相关的文件,包括:ASIHttpRequest文件夹和Reachability文件夹。(2)要... 阅读全文
posted @ 2014-02-15 12:54 yulang 阅读(224) 评论(0) 推荐(0) 编辑
摘要:ASIHTTPRequest是一款极其强劲的HTTP访问开源项目。让简单的 API 完成复杂的功能,如:异步请求,队列请求,GZIP压缩,缓存,断点续传,进度跟踪,上传文件,HTTP认证在新的版本中,还加入了Objective-C闭包Block的支持,让我们的代码更加轻简灵活。下面就举例说明它的AP... 阅读全文
posted @ 2014-02-15 12:52 yulang 阅读(357) 评论(0) 推荐(0) 编辑
摘要:下面首先介绍一下一些基本的概念---同步请求,异步请求,GET请求,POST请求。1、同步请求从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作。也就是说同步就意味着阻塞线程,在同步请求过程中主线程中不响应其他事件直到同步请求结束。2、异步请求就不会... 阅读全文
posted @ 2014-02-15 12:49 yulang 阅读(4482) 评论(0) 推荐(0) 编辑
摘要:网络编程中一般都是经过 请求---》连接---》响应 (request --》 connection --》 response)这个过程。一般的步骤是这样的:1、先创建一个NSURL。2、通过这个指定的URL创建NSURLRequest,这里还可以指定缓存策略和超时时间。3、根据你的request... 阅读全文
posted @ 2014-02-15 12:47 yulang 阅读(421) 评论(0) 推荐(0) 编辑
摘要:UIActivityIndicatorView和UIProgressView都继承自UIView,所以他们可以附属在其他视图上。UIActivityIndicatorView是一个进度提示器,显示一个小圆圈在转动,主要用在一些耗时操作的提示上,比如网络请求;UIProgressView是一个进度提示条,不过它可以显示一个进度,可以告知用户操作已经进行了多少,这二者的目的都是为了在应用程序有耗时操作时在UI上进行显示,提高用户体验。下面分别来创建这个两个控件:首先在ViewController.h中声明代码:[cpp]view plaincopy#import@interfaceViewCont 阅读全文
posted @ 2014-02-15 12:06 yulang 阅读(243) 评论(0) 推荐(0) 编辑
摘要:UIProgressView和UIActivityIndicator有些类似但是不同之处在于,UIProgressView能够更加精确的反应进度UIActivityIndicator则只能表示事物在进行中有一个例子是在Mail程序中当在下载信息的时候,有一个UIProgressView显示在底部初始化方法- (id)initWithProgressViewStyle:(UIProgressViewStyle)styleUIProgressViewStyle 有两个枚举变量1. UIProgressViewStyleDefault 2. UIProgressViewStyleBar一般用于too 阅读全文
posted @ 2014-02-15 12:04 yulang 阅读(547) 评论(0) 推荐(0) 编辑
摘要:UIPopoverController是iPad上的iOS开发会常用到的一个组件(在iPhone设备上不允许使用),这个组件上手很简单,因为他的显示方法很少,而且参数简单,但我在使用过程中还常碰到各种问题,直到今天我感觉才把他的用法完全搞明白。 先看他的继承关系,UIPopoverController是直接继承自NSObject,它和UIViewController没有半毛线关系.那它是怎么实现弹出在所有View之上的,我猜测是利用了keywindow,把这个View加在keywindow里面,我做了个试验,一般我们会在AppDelegate的didFinishLauch(大概是这么个方法). 阅读全文
posted @ 2014-02-15 11:59 yulang 阅读(306) 评论(0) 推荐(0) 编辑
摘要:分页控件是一种用来取代导航栏的可见指示器,方便手势直接翻页,最典型的应用便是iPhone的主屏幕,当图标过多会自动增加页面,在屏幕底部你会看到原点,用来只是当前页面,并且会随着翻页自动更新。一、创建[java]view plaincopyprint?UIPageControl*myPageControl=[[UIPageControlalloc]initWithFrame:CGRectMake(0.0,400.0,320.0,0.0)];二、设置属性1. 页面数目[java]view plaincopyprint?myPageControl.numberOfPages=5;默认第一页会被选中。 阅读全文
posted @ 2014-02-15 11:57 yulang 阅读(213) 评论(0) 推荐(0) 编辑
摘要:iPad的屏幕比iPhone大,所以在界面上,iPad比iPhone多一个UISplitViewController,用来实现iPad在横屏时,分两栏显示所需要的界面,可以一边是目录一边是具体的内容。下面我将详细的阐述UISplitViewController在ipad中的使用。首先是创建一个工程:iPad.demo.然后创建一个DetailViewController和RootViewController,其中RootViewController继承UITableViewController。同事创建两个相应的xib文件。删除ipad_demoViewController.相应的类列表如下: 阅读全文
posted @ 2014-02-15 11:54 yulang 阅读(556) 评论(0) 推荐(0) 编辑
摘要:UIWebView是iOS sdk中一个最常用的控件。是内置的浏览器控件,我们可以用它来浏览网页、打开文档等等。这篇文章我将使用这个控件,做一个简易的浏览器。如下图:我们创建一个Window-based Application程序命名为:UIWebViewDemoUIWebView的loadRequest可以用来加载一个url地址,它需要一个NSURLRequest参数。我们定义一个方法用来加载url。在UIWebViewDemoViewController中定义下面方法:- (void)loadWebPageWithString:(NSString*)urlString{ NSURL ... 阅读全文
posted @ 2014-02-15 11:51 yulang 阅读(243) 评论(0) 推荐(0) 编辑
摘要:UIWebView可以让你创建一个网页浏览器,类似safari,而不是在程序中启动safsri哦。是不是觉得很棒呢?废话少说,切入正题。一、创建UIWebView[java]view plaincopyprint?CGRectbouds=[[UIScreenmanScreen]applicationFrame];UIWebView*webView=[[UIWebViewalloc]initWithFrame:bounds];二、设置属性[java]view plaincopyprint?webView.scalespageToFit=YES;//自动对页面进行缩放以适应屏幕webView.de 阅读全文
posted @ 2014-02-15 11:49 yulang 阅读(208) 评论(0) 推荐(0) 编辑
摘要:UIScrollView 类负责所有基于 UIKit 的滚动操作。一、创建[java]view plaincopyCGRectbounds=[[UIScreenmainScreen]applicationFrame];UIScrollView*scrollView=[[UIScrollViewalloc]initWithFrame:bounds];当你创建完滚动视图后,你可以将另一个视图的内容粘合到滚动视图的空白页上。这回创建一个滚动的内容窗口:[java]view plaincopy[scrollViewaddSubview:myView];你必须给出内容的实际大小,这样滚动视图才知道滚动的 阅读全文
posted @ 2014-02-15 11:47 yulang 阅读(181) 评论(0) 推荐(0) 编辑
摘要:我们计划创建UITextView,实现UITextViewDelegate协议方法,使用NSLog检查该方法何时被调用。我们还会接触到如何在TextView中限制字符的数量,以及如何使用return键隐藏keyboard。看看如何在你的app中实现这些功能。第一步:创建一个新的Xcode项目运行Xcode,依次点击File > New > Project,然后在左边点击iOS下面的"Application",右边选中"Single View Application",然后点击“next”。接下来如图中所示,在"Product Nam 阅读全文
posted @ 2014-02-15 11:45 yulang 阅读(615) 评论(0) 推荐(0) 编辑
摘要:以下为控制器代码,主要用到的是UIPickerView主要步骤:新建一个Single View Application然后,如上图所示,拖进去一个UILabel Title设置为导航,再拖进去一个UILabel,用于显示效果,最后拖进去一个UIPickerView,设置好代理和dataSource,这应该都会。往后就是在代码中实现效果。代码注释很详细,看看都会懂,然后结合API,就可以举一反三了。自己也是慢慢学习的,然后自己练得。嘿嘿多多学习。加油!!!#import @interface sdsViewController : UIViewController//这是显示效果的label@p 阅读全文
posted @ 2014-02-15 11:31 yulang 阅读(1051) 评论(0) 推荐(0) 编辑
摘要:UIActionSheet是在IOS弹出的选择按钮项,可以添加多项,并为每项添加点击事件。为了快速完成这例子,我们打开Xcode 4.3.2, 先建立一个single view application。然后再xib文件添加一个button,用来弹出sheet view。1、首先在.h文件中实现协议,加代码的地方在@interface那行的最后添加,协议相当于java里的接口,实现协议里的方法。@interface sheetviewViewController : UIViewController@end2、添加button,命名button为showSheetView.3、为button建立 阅读全文
posted @ 2014-02-15 11:27 yulang 阅读(232) 评论(0) 推荐(0) 编辑
摘要:系统自带的UISwitch是这样的:既不能写字,也不能改颜色,于是在网上找到了这么一个自定义的Switch按钮,具体出处找不见了。记录一下,怕以后找不见了。先看下效果图:按钮的样式很多,可以文字,可以写多行,文字大小和颜色都可以设置。看下它的源码:[cpp]view plaincopy#import@interfaceHMCustomSwitch:UISlider{BOOLon;UIColor*tintColor;UIView*clippingView;UILabel*rightLabel;UILabel*leftLabel;//privatememberBOOLm_touchedSelf;} 阅读全文
posted @ 2014-02-15 11:25 yulang 阅读(1680) 评论(0) 推荐(0) 编辑
摘要:举例:UIAlertView *alertView= [[UIAlertView alloc]initWithTitle:@"Default Alert View"message:@"Defalut"delegate:selfcancelButtonTitle:@"Cancel"otherButtonTitles:@"OK",nil];标准的双按钮,cancel那个buttonIndex 为0, ok button 的buttonIndex为1UIAlertView *alertView= [[UIAlertVie 阅读全文
posted @ 2014-02-15 11:20 yulang 阅读(248) 评论(0) 推荐(0) 编辑
摘要:初始化UISegmentedControlNSArray *arr = [[NSArray alloc]initWithObjects:@"轻拍",@"长按",@"清扫",@"旋转",@"捏合",@"拖拽", nil];//先创建一个数组用于设置标题UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:arr];//在没有设置[segment setApportionsSegmentWid 阅读全文
posted @ 2014-02-15 11:12 yulang 阅读(419) 评论(0) 推荐(0) 编辑
摘要:初始化一个SliderUISlider *slider = [[UISlider alloc]initWithFrame:CGRectMake(0, 400,320 , 20)];滑块是一个标准的UIControl。我们可以通过代码创建,如同开关(UISwitch)的宽与高都会被忽略一样滑块的高也会被忽略(但是宽度不会):二、设定范围与默认值创建完毕的同时我们要设置好滑块的范围,如果你没有设置,那么会使用默认的 0.0 到 1.0 之间的值。UISlider提供了两个属性来设置范围:mininumValue 和 maxinumValue:源码打印?mySlider.mininumValue=0 阅读全文
posted @ 2014-02-15 11:10 yulang 阅读(549) 评论(0) 推荐(0) 编辑
摘要://初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];//设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef enum { UITextBorderStyleNone, UITextBorderStyleLine, UITextBorderStyleBezel, UITextBorderStyleRoundedRect } ... 阅读全文
posted @ 2014-02-15 11:08 yulang 阅读(184) 评论(0) 推荐(0) 编辑
摘要:UIImageView,顾名思义,是用来放置图片的。使用Interface Builder设计界面时,当然可以直接将控件拖进去并设置相关属性,这就不说了,这里讲的是用代码。1、创建一个UIImageView:创建一个UIImageView对象有五种方法:UIImageView *imageView1 = [[UIImageView alloc] init]; UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:(CGRect)]; UIImageView *imageView3 = [[UIImageView alloc] 阅读全文
posted @ 2014-02-15 11:04 yulang 阅读(243) 评论(0) 推荐(0) 编辑
摘要:第一、UIButton的定义 UIButton*button=[[UIButton buttonWithType:(UIButtonType);能够定义的button类型有以下6种,typedef enum {UIButtonTypeCustom = 0, 自定义风格UIButtonTypeRoundedRect, 圆角矩形UIButtonTypeDetailDisclosure, 蓝色小箭头按钮,主要做详细说明用UIButtonTypeInfoLight, 亮色感叹号UIButtonTypeInfoDark, 暗色感叹号UIButtonTypeContactAdd, 十字加号按钮} UIBu 阅读全文
posted @ 2014-02-15 11:01 yulang 阅读(370) 评论(0) 推荐(0) 编辑
摘要:详细使用:UILabel *label = [[UILabelalloc] initWithFrame:CGRectMake(0, 0, 75, 40)]; //声明UIlbel并指定其位置和长宽label.backgroundColor = [UIColorclearColor]; //设置label的背景色,这里设置为透明色。label.font = [UIFont fontWithName:@"Helvetica-Bold" size:13]; //设置label的字体和字体大小。label.transform = CGAffineTransformMakeRotat 阅读全文
posted @ 2014-02-15 10:59 yulang 阅读(259) 评论(0) 推荐(0) 编辑
摘要:这个程序的主要界面就是一个TabBarController。总共三个标签,第一个是所有的可点的菜,第二个是已点的菜,第三个是可以留言或者查看所有留言。下面是第一个页面:右上角的i按钮是添加新菜,每个cell中的order就是点餐咯,可以重复按多次。首先说下这个列表的数据是存放在coredata中的,这个项目的coredata有两个实体,一个是dishes保存每一道菜的名字,id,价格,描述,菜系等。还有一个实体是type保存菜系。这个项目用coredata的方式,正好是我想学的。就是在新建项目的时候勾选use coredata,那么在appdelegate中就会出现与coredata响应的代码 阅读全文
posted @ 2014-02-15 10:51 yulang 阅读(547) 评论(0) 推荐(0) 编辑
摘要:定位您可以通过以下代码来开启定位功能:源码复制打印关于//开启定位功能[_mapViewsetShowsUserLocation:YES];定位成功后,可以通过mapView.userLocation来获取位置数据。您也可以通过以下代码来使用定位三态效果,包括普通态、跟随态和罗盘态:源码复制打印关于//普通态-(IBAction)startLocation:(id)sender{NSLog(@"进入普通定位态");_mapView.showsUserLocation=NO;//先关闭显示的定位图层_mapView.userTrackingMode=BMKUserTracki 阅读全文
posted @ 2014-02-14 16:05 yulang 阅读(399) 评论(0) 推荐(0) 编辑
摘要:接口说明百度地图API提供的搜索服务包括:POI检索,多关键字检索,公交方案检索,驾车路线检索,步行路线检索,地理编码,反地理编码,公交详情检索,在线建议查询,短串分享。所有检索请求接口均为异步接口,您必须实现BMKSearchDelegate协议,在一个时刻只能有一个BMKSearch接受回调消息,因此如果在不同的viewController中使用多个BMKSearch,需要在页面切换对BMKSearch的delegate做处理,代码如下:源码复制打印关于-(void)viewWillAppear:(BOOL)animated{_search.delegate=self;}-(void)vi 阅读全文
posted @ 2014-02-14 16:04 yulang 阅读(1231) 评论(0) 推荐(0) 编辑
摘要:覆盖物概述地图上自定义的标注点和覆盖物我们统称为地图覆盖物。您可以通过定制BMKAnnotation和BMKOverlay来添加对应的标注点和覆盖物。地图覆盖物的设计遵循数据与View分离的原则,BMKAnnotation和BMKOverlay系列的类主要用来存放覆盖物相关的数据,BMKAnnotaionView和BMKOverlayView系列类为覆盖物对应的View。SDK支持画点、折线、圆、多边形(包括凹凸两种)、图片图层和自定义覆盖物。从2.0.0开始矢量地图采用OpenGL绘制,新增支持OpenGL绘制的基本线绘制、面绘制接口。详见AnnotationDemo,SDK内置的BMKPo 阅读全文
posted @ 2014-02-14 16:03 yulang 阅读(951) 评论(0) 推荐(0) 编辑
摘要:接上二篇的内容,今天我们就来介绍一下如何将解析出来的数据放入AQGridView中显示出来,因为我们的工程中已经将AQGridView导入了,所以我们在KKFirstViewController中直接可以引用[plain]view plaincopy#import#import"ASIHTTPRequest.h"#import"AQGridView.h"@interfaceKKFirstViewController:UIViewController@property(nonatomic,retain)AQGridView*gridView;@end这里加 阅读全文
posted @ 2014-02-14 15:23 yulang 阅读(236) 评论(0) 推荐(0) 编辑
摘要:接上一篇,这篇我们对我们的客户端加入KissXML,MBProgressHUD,AQridView这几个库,首先我们先加入KissXML,这是XML解析库,支持Xpath,可以方便添加更改任何节点。先从官方网站上下载KissXML这个库https://github.com/robbiehanson/KissXML接下来,将KissXML库中的KissXML文件夹拷入我们的工程中,如图然后跟上次一样,我们通过File/Add File to "Tuan1"这个选项加入到我们的工程中,我们以同样的方法分别加入MBProgressHUD和AGridView这两个库在Framewo 阅读全文
posted @ 2014-02-14 15:20 yulang 阅读(195) 评论(0) 推荐(0) 编辑
摘要:团购信息客户端,主要整合了ASIHTTPREQUEST,KISSXML,AQGridView,MBProgressHUD这几个主要流行的IOS开发库,我们先来看一下效果图首先我们新建一个IOS工程,暂时就取名为Tuan1吧,如图下好,工程新建完后我们就要加入框架了,首先加入ASIHTTPREQUEST库,首先我们从https://github.com/pokeb/asi-http-request/tree下载压缩包点ZIP按钮就行了,会全部将文件下载下来,好,我们接着就将它加入我们的工程中,首先找到我们新建工程的那个Tuan1的文件夹,在底下新建一个ASIHttpRequest的文件夹接着把我 阅读全文
posted @ 2014-02-14 15:17 yulang 阅读(321) 评论(0) 推荐(0) 编辑
摘要:1 前言众所周知在IOS中没有单选按钮这一控件,今天我们来学习一下简单的单选控件。类似与Web中的radio表单元素。2 详述本控件单纯的利用按钮控件和NSObject的respondsToSelector方法来判断某一个类中是否存在某方法。代码概述:RadioButton.h(控件头文件):[plain]view plaincopy#import@protocolRadioButtonDelegate-(void)radioButtonSelectedAtIndex:(NSUInteger)indexinGroup:(NSString*)groupId;@end@interfaceZYRad 阅读全文
posted @ 2014-02-14 15:10 yulang 阅读(431) 评论(0) 推荐(0) 编辑
摘要:为了方便程序调用,我们把XMPP的一些主要方法写在AppDelegate中在AppDelegate.m下这几个方法为:[java]view plaincopy-(void)setupStream{//初始化XMPPStreamxmppStream=[[XMPPStreamalloc]init];[xmppStreamaddDelegate:selfdelegateQueue:dispatch_get_current_queue()];}-(void)goOnline{//发送在线状态XMPPPresence*presence=[XMPPPresencepresence];[[selfxmppS 阅读全文
posted @ 2014-02-14 15:01 yulang 阅读(1320) 评论(0) 推荐(0) 编辑
摘要:XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。 XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分;在IETF 中,把IM协议划分为四种协议,即即时信息和出席协议(Instant Messaging and Presence Protocol, IMPP)、出席和即时信息协议(Presence and In. 阅读全文
posted @ 2014-02-14 14:54 yulang 阅读(2158) 评论(0) 推荐(0) 编辑
摘要:这个页面要讲述的是用户的粉丝列表,下面是效果图:可以看到这个视图明显也是一个tableview,在每一个cell中包含的有三个部分的内容:粉丝头像image,粉丝昵称label,我和粉丝之间的相互关注情况button。在这个页面我们主要处理的内容有:① 粉丝列表数据的获取 ②tableview视图界面的组织(重点是:添加关注和取消关注)(1)首先是获取粉丝列表数据,这部分内容没有什么好说的,就是些JSON数据,然后解析。调用的API:https://api.weibo.com/2/friendships/followers.json。其中有一个点是需要注意的。我们注意到其中API请求的参数:c 阅读全文
posted @ 2014-02-14 14:41 yulang 阅读(337) 评论(0) 推荐(0) 编辑
摘要:这一篇博文讲述发微博界面的实现。首先我们先了解一下在这个发微博界面中需要做哪些事情吧!(1)发微博包括文字内容和微博图片,所以我们可以用一个textview来装载微博文字内容,用一个imageview来装载图片内容。①在文字部分,用一个textview,在发送的时候检测一下发送文字的个数,如果超过140,那么给出提示信息。在图片部分,用一个imageview,并且如果添加了图片,那么在图片的右上角添加一个打叉的按钮,作用是去除图片;当然,在你没有选择添加图片或者取消了已选图片时,按键自动取消。效果如下图:这个打叉的cancelButton的处理比较简单,代码如下:[cpp]view plain 阅读全文
posted @ 2014-02-14 14:37 yulang 阅读(610) 评论(0) 推荐(0) 编辑
摘要:上一篇sina微博Demo已经完成的认证,下面就开始进入微博相关内容的加载及显示。其实主要的工作就是调用微博API加载相关的json数据,然后进行解析,然后在界面中进行组织好在tableview中进行显示。这篇博文记录第一个界面--主页主页中显示当前登录用户及其所关注用户的最新微博,其数据请求用到的API可以是https://api.weibo.com/2/statuses/friends_timeline.json或者是https://api.weibo.com/2/statuses/home_timeline.json,这两个的返回都是一样的,这里还要注意的是HTTP的请求方式,基本上是G 阅读全文
posted @ 2014-02-14 14:34 yulang 阅读(700) 评论(0) 推荐(0) 编辑
摘要:设计模式:备注:消息传递模型(Message Passing)是Objective-C语言的核心机制。在Objective-C中,没有方法调用这种说法,只有消息传递。在C++或Java中调用某个类的方法,在Objective-C中是给该类发送一个消息。在C++或Java里,类与类的行为方法之间的关系非常紧密,一个方法必定属于一个类,且于编译时就已经绑定在一起,所以你不可能调用一个类里没有的方法。而在Objective-C中就比较简单了,类和消息之间是松耦合的,方法调用只是向某个类发送一个消息,该类可以在运行时再确定怎么处理接受到的消息。也就是说,一个类不保证一定会响应接收到的消息,如果收到了一 阅读全文
posted @ 2014-02-14 14:27 yulang 阅读(722) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示