iOS中控制器的释放问题


iOS中控制器的释放问题

ARC工程是可以重写dealloc方法并被系统调用的,但不需要手动调用父类的dealloc,手写[super dealloc]方法会报错,事实上系统会自动帮你调用父类的dealloc方法,不需要你实现。可以通过在dealloc方法中打印log查看控制器是否被释放。

控制器在被pop后移出栈后会被释放,但有些时候会发现控制器出栈的时候不会调用dealloc方法,归根结底,是因为当前控制器被某个对象强引用了,控制器的引用计数不为0,系统无法帮你释放这部分内存。

封装键盘工具条为基类


键盘工具条的使用

开发中经常会跟键盘打交道,键盘上添加工具条,可以方便的应对一些多textField的界面操作。如果一个项目中多处用到类似的含有工具条的键盘处理,可以使用封装的思想,实现一个基类。需要用到的地方直接继承这个基类即可。

下面说说实现的方法,以及遇到的问题:

tabBarController和Navigation之间的问题


tabbar 和navigation之间的问题

创建一个tabbarController的主界面,childControllers为 ViewController1、ViewController2,如何在ViewController2里面的某一个界面中点击一个按钮 让ViewController2 push到下一个界面 并且让界面显示为该界面。

更形象的例子:可参考微信,在微信界面点击进入聊天框;在通讯录界面,点击相应联系人,然后点击发送消息,进入聊天框。两个方式进入聊天框 左上角的返回键 都是返回tabbar的主界面。

一个tabBarController管理多个Storyboard


一个tabBarController管理多个Storyboard

随着项目的业务逻辑越来越复杂,随着项目越来越大,那么我们Storybard中得控制器就越来越多, 就越来越难以维护。然而使用Storyborad又能更方便的帮助我们做屏幕适配(PS:尤其在6、6+出来后)。

我们可以将复杂的问题简单化,通过创建多个Storyboard分别管理不同的模块的方式来优化代码,分成两步:好处:多个Storyboard可以分开管理,一个人负责一块儿,提交代码时不冲突;逻辑简单,方便屏幕适配

  1. 按业务逻辑拆分Storyboard
  2. 在ApplicationDelegate中创建一个tabBarController, 并将4个Storybard作为子控制器添tabBarController。

Assets.car提取素材


关于Assets.car素材问题

最近在做自己的第一个App,由于全程都是自己一个人完成,所以原型设计、素材都得自己找,自己改。遇到了提取Assets.car中的素材的问题,通过网络找到了2中解决方法: