摘要:
UIDatePicker1.常见属性/*样式UIDatePickerModeTime,时间UIDatePickerModeDate,日期UIDatePickerModeDateAndTime 日期 + 时间*/@property(nonatomic) UIDatePickerMode datePic...
阅读全文
posted @ 2014-04-17 14:48
TianXiang.Liu
阅读(413)
推荐(0)
摘要:
一、UITextField1.常见属性@property(nonatomic,retain) UIView *leftView; // 设置文本框左边显示什么控件,可以让文本框的内容往右边挪动@property(nonatomic) UITextFieldViewMode leftViewMo...
阅读全文
posted @ 2014-04-17 14:45
TianXiang.Liu
阅读(127)
推荐(0)
摘要:
一、URL1.什么是URL?URL是某个资源的唯一路径,通过这个路径就能访问对应的资源2.URL的组成协议头://全路径* 协议头就代表资源的类型,比如http代表网络服务器资源,ftp代表ftp文件服务器资源,file代表本地资源3.举例http://www.baidu.comhttp://www...
阅读全文
posted @ 2014-04-17 14:44
TianXiang.Liu
阅读(243)
推荐(0)
摘要:
一、加载xib文件的两种方式1.方法一(NewsCell是xib文件的名称)NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"NewsCell" owner:nil options:nil];2.方法二UINib *nib = [UIN...
阅读全文
posted @ 2014-04-17 14:42
TianXiang.Liu
阅读(578)
推荐(0)
摘要:
一、UITableView的代理方法#pragma mark 每一行的高度- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath #pragma mark 选中了某一...
阅读全文
posted @ 2014-04-17 14:38
TianXiang.Liu
阅读(210)
推荐(0)
摘要:
一、UITableView1.数据展示的条件1> UITableView的所有数据都是由数据源(dataSource)提供的,所以要想在UITableView展示数据,必须设置UITableView的dataSource数据源对象2> 要想当UITableView的dataSource对象,必须遵守...
阅读全文
posted @ 2014-04-17 14:32
TianXiang.Liu
阅读(467)
推荐(0)
摘要:
一、UIScrollView1.常见属性@property(nonatomic) CGPoint contentOffset; // 记录UIScrollView滚动的位置@property(nonatomic) CGSize contentSize; // 内容尺寸(能滚动的范围)@propert...
阅读全文
posted @ 2014-04-17 14:29
TianXiang.Liu
阅读(269)
推荐(0)
摘要:
一、类扩展(class extension,匿名分类)1.格式@interface 类名 (){ // 成员变量...}// 方法声明...@end2.作用1> 写在.m文件中2> 一般用来扩充私有成员变量、@property属性、方法等二、随机数生成1.arc4random() 会生成任意正...
阅读全文
posted @ 2014-04-17 14:27
TianXiang.Liu
阅读(499)
推荐(0)
摘要:
一、UIButton和UIImageView的区别1.显示图片1> UIImageView只能显示一种图片(图片默认会填充整个UIImageView) image\setImage:2> UIButton能显示2种图片* 背景 (背景会填充整个UIButton) setBackroungImag...
阅读全文
posted @ 2014-04-17 14:25
TianXiang.Liu
阅读(682)
推荐(0)
摘要:
IOS基本控件属性一、控件的属性1.CGRect frame1> 表示控件的位置和尺寸(以父控件的左上角为坐标原点(0, 0))2> 修改这个属性,可以调整控件的位置和尺寸2.CGPoint center1> 表示控件的中点(以父控件的左上角为坐标原点)2> 修改这个属性,可以调整控件的位置3.CG...
阅读全文
posted @ 2014-04-17 14:20
TianXiang.Liu
阅读(301)
推荐(0)
摘要:
创建一个简单的tableView: 1 #import 2 3 /*tableView 一定要遵守这两个协议: UITableViewDataSource,UITableViewDelegate */ 4 5 @interface ViewController :UIViewControll...
阅读全文
posted @ 2014-04-16 18:07
TianXiang.Liu
阅读(361)
推荐(0)
posted @ 2014-04-16 16:35
TianXiang.Liu
阅读(345)
推荐(0)
摘要:
在Objective-C中采用Automatic Reference Counting(ARC)机制,让编译器来进行内存管理。在新一代Apple LLVM编辑器中设置ARC为有效状态,就无需再次键入retain或者release代码,这在降低程序崩溃、内存泄露等风险的同时,很大程度上减少了开发程序的工作量。编译器完全清楚目标对象,并能立刻释放那些不再被使用的对象。如此一来,应用程序将具有可预测性,且能流畅运行,速度也将大幅度提升。
阅读全文
posted @ 2014-03-28 22:26
TianXiang.Liu
阅读(325)
推荐(0)
posted @ 2014-03-24 22:39
TianXiang.Liu
阅读(259)
推荐(0)
摘要:
代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。脱字符(^)是块的语法标记。按照我们熟悉的参数语法规约所定义的返回值以及块的主体(也就是可以执行的代码)。下图是如何把块变量赋值给一个变量的语法讲解:按照调用函数的方式调用块对象变量就可以了:1 int result = myBlock(4); // result是 282 1、参数是NSString*的代码块3 void (^printBlock)(NSString *x);4 printBlock = ^(NSString* str)5 {6 NS..
阅读全文
posted @ 2014-03-09 21:20
TianXiang.Liu
阅读(221)
推荐(0)
摘要:
单例是指静态分配的实例,就是只开辟一块内存,不会重新开辟内存,而 iphone sdk 中全是这种实例,例如[UIApplication sharedApplication] 返回一个指向代表应用程序的单例对象的指针。[UIDevice currentDevice] 获取一个代表所有使用硬件平台的对象。将类方法与单例相结合,便可以在程序的任何地方访问静态实例,而无需使用指向对象的指针或保存它的实例变量。单例模式是一个类在系统中只有一个实例对象。通过全局的一个入口点对这个实例对象进行访问。在iOS开发中,单例模式是非常有用的一种设计模式。如下图,是一个简单的例模式的UML类图。IOS中的单例模式
阅读全文
posted @ 2014-03-09 21:11
TianXiang.Liu
阅读(213)
推荐(0)
摘要:
NSNotification、delegate和KVO
阅读全文
posted @ 2014-03-09 21:05
TianXiang.Liu
阅读(273)
推荐(0)
摘要:
- (void)showStoryboard{ // 实例化MainStoryboard UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; // 在主线程上更新Storyboard dispatch_async(dispatch_get_main_queue(), ^{ self.window.rootViewController = storyboard.instantiateInitialViewController;...
阅读全文
posted @ 2014-03-05 10:02
TianXiang.Liu
阅读(259)
推荐(0)
摘要:
如果把人生比作跑步的话,我们都在用自己的节奏和姿势在完成比赛。这些跑步的技巧可能是小时候从老师,朋友,家人那得来的。随着时间的流逝,我们习惯了这种跑步的技能,看见那些跑得快的,会羡慕;跑得慢的,会不屑;跑得别扭的,会当作笑料。但是自己跑得怎么样,却很少关心。为什么要跑这条道?为什么这么慢?为什么这么累?我们很难做到客观,尤其是面对自己的时候,那些缺点、曾经犯的错会自动进入盲区,躲避意识的雷达。尽管如此,我还是找到了数量可观的不足,才发现,原来这么些年,我一直在以这么别扭、丑陋的姿势在跑步。不够专注乔希·维茨金在《学习的艺术》里曾这么描述他当时的专注程度:『我太过于专注,以至于她觉得如
阅读全文
posted @ 2014-02-28 13:17
TianXiang.Liu
阅读(157)
推荐(0)
摘要:
网上相关的资源不多,开源的且质量还不错的iOS项目也是少之又少,最近正好跟同事合作了一个iOS项目,来说说自己的一些想法。目录结构AppDelegateModelsMacroGeneralHelpersVendorsSectionsResources一个合理的目录结构首先应该是清晰的,让人一眼看上去就能大概了解目录的职责,且容易应对新的变化。AppDelegate这个目录下放的是AppDelegate.h(.m)文件,是整个应用的入口文件,所以单独拿出来。Models这个目录下放一些与数据相关的Model文件,里面大概是这样:Models |- BaseModel.h |- Bas...
阅读全文
posted @ 2014-02-28 12:25
TianXiang.Liu
阅读(188)
推荐(0)
摘要:
最近几年中涌现了大量的Objective-C开发者。有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语言转过来的,如Java或C#,当然也有直接以Objective-C作为入门语言的。也就是说有很大一部分开发者都没有使用Objective-C太长时间。当你接触一门新语言时,更多地会关注基础知识,如语法和特性等。但通常有一些更高级的,更鲜为人知又有强大功能的特性等待你去开拓。这篇文章主要是来领略下Objective-C的运行时(runtime),同时解释是什么让Objective-C如此动态,然后感受下这些动态化的技术细节。希望这回让你对Objective-C和Cocoa是如
阅读全文
posted @ 2014-02-28 12:11
TianXiang.Liu
阅读(256)
推荐(1)
摘要:
#pragma mark 清空字符串中的空白字符- (NSString *)trimString{ return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];}#pragma mark 是否空字符串- (BOOL)isEmptyString{ return (self == nil || self.length == 0);}#pragma mark 返回沙盒中的文件路径- (NSString *)documentsPath{ NSString...
阅读全文
posted @ 2014-02-26 14:09
TianXiang.Liu
阅读(225)
推荐(0)
摘要:
1.登陆openfire管理页面,在主页面下方选择编辑属性,修改服务器名称为当前主机名称,点击保存属性,按页面提示重启服务器。2.重启后,主页的服务器属性下的服务器名称出现一个叹号,鼠标放上去显示Found RSA certificate that is not valid for the server domain, 这样是由于RSA认证无效造成的,需要对新的服务器进行RSA证书的配置。3.选择【服务器设置】菜单,选择左下方的【服务器证书】,会看到两个证书,点击后面的删除按钮全部删除。删除后按系统提示重启服务器。4.重启后,回到【服务器证书】页面会看到 “一个或更多的证书丢失。单击这里产生自
阅读全文
posted @ 2014-02-24 17:01
TianXiang.Liu
阅读(349)
推荐(0)
摘要:
1.重复调用2次loadView和viewDidLoad2.按钮无法点击3.@2x和-568h@2x4.启动app时全屏显示Default.png1.重复调用2次loadView和viewDidLoad最好不要在UIViewController的loadView方法中改变状态栏的可视性(比如状态栏由显示变为隐藏、或者由隐藏变为显示),因为会导致重复调用2次loadView和viewDidLoad方法假设状态栏本来是处于显示状态的:下面的是错误代码: 1 - (void)loadView { 2 NSLog(@"loadView"); 3 // 隐藏状态栏 4 [U...
阅读全文
posted @ 2014-02-22 23:01
TianXiang.Liu
阅读(358)
推荐(0)
posted @ 2014-02-21 23:07
TianXiang.Liu
阅读(187)
推荐(0)
posted @ 2014-02-19 18:45
TianXiang.Liu
阅读(153)
推荐(0)
摘要:
// 返回一个可拉伸的图片 // UIImage的分类+ (UIImage *)resizedImage:(NSString *)name{ UIImage *image = [self imageWithName:name]; return [image stretchableImageWithLeftCapWidth:image.size.width * 0.5 topCapHeight:image.size.height * 0.5];}
阅读全文
posted @ 2014-01-15 11:34
TianXiang.Liu
阅读(149)
推荐(0)
posted @ 2014-01-15 11:30
TianXiang.Liu
阅读(1301)
推荐(2)
posted @ 2014-01-15 11:10
TianXiang.Liu
阅读(181)
推荐(0)
摘要:
一、NSInvocationOperation二、NSBlockOperation三、NSOperation的其他用法四、自定义NSOperation1.上一讲简单介绍了NSThread的使用,虽然也可以实现多线程编程,但是需要我们去管理线程的生命周期,还要考虑线程同步、加锁问题,造成一些性能上的开销。我们也可以配合使用NSOperation和NSOperationQueue实现多线程编程,实现步骤大致是这样的:1> 先将需要执行的操作封装到一个NSOperation对象中2> 然后将NSOperation对象添加到NSOperationQueue中3> 系统会自动将NSOp
阅读全文
posted @ 2013-12-28 21:41
TianXiang.Liu
阅读(302)
推荐(0)
摘要:
每个iOS应用程序都有个专门用来更新显示UI界面、处理用户触摸事件的主线程,因此不能将其他太耗时的操作放在主线程中执行,不然会造成主线程堵塞(出现卡机现象),带来极坏的用户体验。一般的解决方案就是将那些耗时的操作放到另外一个线程中去执行,多线程编程是防止主线程堵塞,增加运行效率的最佳方法。iOS中有3种常见的多线程编程方法:1.NSThread这种方法需要管理线程的生命周期、同步、加锁问题,会导致一定的性能开销2.NSOperation和NSOperationQueue是基于OC实现的。NSOperation以面向对象的方式封装了需要执行的操作,然后可以将这个操作放到一个NSOperat...
阅读全文
posted @ 2013-12-28 21:24
TianXiang.Liu
阅读(217)
推荐(0)
摘要:
多线程技术 —— 通过并发提高程序的整体性能。进程 - 应用程序,负责开辟一块内存区域,供应用程序执行 每一个进程都默认有一个“主线程”线程 - 要执行的任务流 当有耗时操作时,可能需要在后台新建一个子线程,来单独处理这些耗时的操作,待操作完成之后,再更新UI界面。 如果不放在其他线程执行,会“阻塞”住主线程的执行,影响用户体验。注意:所有界面UI的更新操作,都必须在主线程上完成!提问:一般的应用程序最多能开多少条线程?回答:尽可能少得开线程,只有那些消耗时间,影响用于体验的操作,才会放到后台线程中执行,通常一个应用程序的子线程不应该超过20。无论使用哪种多线程技术都可以使用 [NSThrea
阅读全文
posted @ 2013-12-28 20:38
TianXiang.Liu
阅读(183)
推荐(0)