摘要: 做苹果开发或者果粉对导航条这个东西应该都不陌生,这咚咚在小小的屏幕上通过一个简单的View的队列管理来做到手机界面的有条理管理,但是开发过程程序员可能碰到各种死法,下面分享一二。 例子:MyViewController*sampleViewController = [[[MyViewControlleralloc]initWithXXX]autorelease]; [self.navigationControllerpushViewController:sampleViewControlleranimated:true];[sampleViewController release]... 阅读全文
posted @ 2014-03-18 18:37 ygm900 阅读(298) 评论(0) 推荐(0) 编辑
摘要: iPhone开发中从一个视图跳到另一个视图有三种方法:1、self.view addSubView:view 、self.window addSubView,需要注意的是,这个方法只是把页面加在当前页面。此时在用self.navigationControler.pushViewController和 pushViewController是不行的。要想使用pushViewController和popViewController进行视图间的切换,就必须要求当前视图是个NavigationController。2、就是使用self.navigationControler pushViewContro 阅读全文
posted @ 2014-03-18 15:16 ygm900 阅读(1262) 评论(0) 推荐(0) 编辑
摘要: typedef作为类型定义关键字,用于在原有数据类型(包括基本类型、构造类型和指针等)的基础上,由用户自定义新的类型名称。在编程中使用typedef的好处,除了为变量取一个简单易记且意义明确的新名称之外,还可以简化一些比较复杂的类型声明。比如:typedef int INT32;将INT32定义为与int具有相同意义的名字,这样类型INT32就可用于类型声明和类型转换了,它和类型int完全相同。比如:INT32a;//定义整型变量a(INT32)b;//将其它的类型b转换为整型既然已经有了int这个名称,为什么还要再取一个名称呢?主要是为了提高程序的可移植性。比如,某种微处理器的int为16位 阅读全文
posted @ 2014-03-18 14:03 ygm900 阅读(329) 评论(1) 推荐(1) 编辑
摘要: __block 变量一般来说,在block内只能读取在同一个作用域的变数而且没有办法修改在block外定义的任何变量,此时若我们想要这些变数能够在block中被修改,就必须在前面挂上__block的修饰词,以上面第一个例子中的 multiplier 来说,这个变数在 block 中是唯读的,所以 multiplier = 7 指定完后,在 block 中的 multiplier 就只能是 7 不能修改,若我们在 block 中修改 multiplier ,在编辑时就会产生错误,因此若想要在 block 中修改 multiplier ,就必须在 multiplier 前面加上 __block 的 阅读全文
posted @ 2014-03-18 13:51 ygm900 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 最近的工作中比较频繁的用到了Block,不在是以前当做函数指针的替代或者某些API只有Blocks形式的接口才不得已用之了,发现自己对其了解还是太浅,特别是变量的生存期,按惯例还是翻译官方文档,原文链接。介绍Block 对象是C语言层面的语法,也是一个运行时特性. 它们很类似与标准的C函数,但是除了可执行的代码,它们还包含了与自动(栈)或托管(堆)的内存所绑定的变量。因此一个block维护了一系列的状态(即数据),在执行时会改变代码的行为。你可以使用blocks编写函数表达式当参数传入API,也可以将其保存下来用于多线程。Blocks在回调(回调的概念)中非常有用,因为block不仅包含着.. 阅读全文
posted @ 2014-03-18 13:48 ygm900 阅读(640) 评论(0) 推荐(0) 编辑
摘要: 简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取。最常用到的函数+ (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat, ...;1.比较运算符 > 、= 、= 99"2.范围运算符:IN 、BETWEEN例:@"number BETWEEN {1,5}" @"address IN {'shanghai','nanjing'}"3.字符串本身:SELF例:@&qu 阅读全文
posted @ 2014-03-18 12:30 ygm900 阅读(261) 评论(0) 推荐(0) 编辑
摘要: NSAssert()只是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异常,并切可以自定义异常描述。NSAssert()是这样定义的:#define NSAssert(condition, desc)condition是条件表达式,值为YES或NO;desc为异常描述,通常为NSString。当conditon为YES时程序继续运行,为NO时,则抛出带有desc描述的异常信息。NSAssert()可以出现在程序的任何一个位置。具体事例如下:生成一个LotteryEntry对象时,传入的N 阅读全文
posted @ 2014-03-18 12:26 ygm900 阅读(6912) 评论(0) 推荐(0) 编辑
摘要: 开始:Block 简介Block 是 iOS 4.0 和 Mac OSX 10.6 引入的一个新特性。 Block 可以极大的简化代码。 他们可以帮助你减少代码, 减少对代理的依赖, 并且写出更加简洁,可读性强的代码。即使有这么多好处, 还是有很多开发者没有使用 Block, 因为他们不知道如何使用。 但是 Block 绝对是你作为一个 Objective-C 程序员,一定会想要掌握的技能。让我们来看看 Block 是谁, 是什么,在哪里用它, 为什么用它, 还有什么时候用它。Block 是什么东西,它为什么那么重要?Block 的核心就是一段可以在以后的时间里执行的代码。Block 是fir 阅读全文
posted @ 2014-03-18 11:43 ygm900 阅读(2143) 评论(0) 推荐(0) 编辑
摘要: 单例(单态)模式单例设计模式确保对于一个给定的类只有一个实例存在,这个实例有一个全局唯一的访问点。它通常采用懒加载的方式在第一次用到实例的时候再去创建它。注意:苹果大量使用了此模式。例如:[NSUserDefaults standardUserDefaults], [UIApplication sharedApplication], [UIScreen mainScreen], [NSFileManager defaultManager],所有的这些方法都返回一个单例对象。你很可能会想为什么这么关心是否一个类有多个实例?毕竟代码和内存都是廉价的,对吗?有一些情况下,只有一个实例显得非常合理。举 阅读全文
posted @ 2014-03-18 11:01 ygm900 阅读(3235) 评论(0) 推荐(0) 编辑
摘要: 创建一个单例很多办法。我先列举一个苹果官方文档中的写法。[cpp]view plaincopystaticAccountManager*DefaultManager=nil;+(AccountManager*)defaultManager{if(!DefaultManager)DefaultManager=[[selfallocWithZone:NULL]init];returnDefaultManager;}当然,在iOS4之后有了另外一种写法:[cpp]view plaincopy+(AccountManager*)sharedManager{staticAccountManager*sh 阅读全文
posted @ 2014-03-18 11:00 ygm900 阅读(75351) 评论(1) 推荐(6) 编辑
摘要: 苹果的消息机制是个非常好用的东西,当需要在类的各个实例之间传递消息或者写一些事件驱动的程序时,绝对是个不错的工具。但是使用时一不小心就会造成引用已经被dealloc的对象的错误,引起程序崩溃。于是,在合适的时机addobserver和removeobserver就是个很关键的事情。下面,分几种情况来阐述一下自己的一点想法。一,使用defaultcenter。简单的情况下,若自己没有太多的消息需要注册和处理,直接使用[NSNotificationCenter defaultCenter]来调用默认的消息中心就够用了。如果,有一些特殊的要求那么,就需要试一下一个继承自NSnotificationc 阅读全文
posted @ 2014-03-18 10:28 ygm900 阅读(566) 评论(0) 推荐(0) 编辑