摘要:
当程序接到内存警告时View Controller将会收到这个消息:didReceiveMemoryWarning从iOS3.0开始,不需要重载这个函数,把释放内存的代码放到viewDidUnload中去。这个函数的默认实现是:检查controller是否可以安全地释放它的view(这里加粗的view指的是controller的view属性),比如view本身没有superview并且可以被很容易地重建(从nib或者loadView函数)。如果view可以被释放,那么这个函数释放view并调用viewDidUnload。你可以重载这个函数来释放controller中使用的其他内存。但要记得调用 阅读全文
摘要:
理解view的生命周期:在UIViewController中,view(黑体的view指的是controller的view属性)有两个循环:加载和卸载循环。当程序的一部分向controller请求view的指针且view不在内存中时,view会进入加载循环,controller会将view加载入内存。当程序接收到内存警告时,controller会尝试卸载view,在卸载循环中,controller尝试释放它的view对象并返回到原始的无view状态(当它不在屏幕上显示时,这个条件的判断到底是根据view的结构来还是根据用户视觉来,我尚不清楚),直到view下次被请求。在加载卸载循环中,cont 阅读全文
摘要:
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { // Override point for customization after application launch. RootViewController*rootController=[[RootViewControlleralloc]init]; rootController.title=@"Root"; navController= [[UINav 阅读全文
摘要:
1.main(){int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);printf("%d,%d",*(a+1),*(ptr-1));}答:2,5*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5 &a+1不是首地址+1,系统会认为加一个a数组的偏 移,是偏移了一个数组的大小(本例是5个int) int *ptr=(int *)(&a+1); 则ptr实际 是&(a[5]),也就是a+5原因如下: &a是数组指针,其类型为 int (*)[5]; 而 指针加1要根据指针类型加上 阅读全文
摘要:
1 : 如果无法保证子类行为的一致性,那么就用委托If the subClass can't keep with superClass,use delegate rather than inheritance.2: 屏 幕上看到的,都是 UIVewEverything you see on Screen is UIView.3: 如 果对性能要求高,慎用 Interface Build(Xcode 4.2.1已经变了,冒似没有Interface Builder的概念了)if application's performance is important,be discreet f 阅读全文
摘要:
loadView,viewDidLoad,viewDidUnload,这三个函数到底应该怎么用?谷歌一下,全是转载,大概内容是这样:loadView 手动加载viewviewDidLoad用于nib文件加载后,进一步处理viewDidUnload是viewDidLoad的镜像参考官方文档,我给出纠正:一、loadView永远不要主动调用这个函数。view controller会在view的property被请求并且当前view值为nil时调用这个函数。如果你手动创建view,你应该重载这个函数。如果你用IB创建view并初始化view controller,那就意味着你使用initWithNi 阅读全文