完成作品重要,把这个过程记录下来也许同样重要。
2012.7.8-7.9
完成程序的UI布局。主要是storyboard和segue的设计。
7.10-7.11
使用测试数据,测试数据在界面上的显示。调整单元格的样式。
7.12-7.13
使用TTS控件,完成汉字发音的测试。发现控件的一个bug(联网状态下进行语音合成后,断开网络再合成会造成程序在start函数处崩溃)。
这个bug在控件本身的演示demo中就存在。
由于控件中包含的库文件使用的是ios4代码,不支持automatic reference counting的功能,所以需要在build setting中将该功能关闭。
进一步理解delegate的含义,并学会自己定义delegate。
7.16-?
采用xml文件存储数据。使用coredata和tableview进行交互,打通数据在界面之间的传递通道。使用样本数据进行测试。
7.22 终于会初步使用coredata来存储和提取数据了。
1. coredata 的使用花了很长时间。
边看着斯坦福的视频,边学习coredata的使用。发现视频中的代码在运行到performFetch的时候就运行不下去了。同时如果继承coredataviewcontroller会提示编译错误
原因还没有找到。
决定换一种实现思路。学习ios4教材中coredata的sample code,初步完成了功能。
同时理解了代码中,为什么要把coredata相关的实现部分放到appdelegate文件中,而不是放到具体的viewcontroller中。这是为了代码复用的需要,如果还有另一个不同的viewController需要使用coredata的函数,就不必在自己的实现文件中重新定义了,只需要调用appdelegate中的函数就可以了,也许这就是appdelegate文件存在的意义。
2.临时变量在初始化时要赋值nil。
NSError *error;
self.result = [self.managedObjectContext executeFetchRequest:requesterror:&error];
if (error) {
NSLog(@"error is %@", [errorlocalizedDescription]);
}
调试时,一直发现执行到NSLog处之后就不能往下执行。查了很久才发现是error应该赋值为nil。3. navigator 到另一个视图,然后按下back回到当前视图的时候,当前viewController中声明的变量,如果没有赋值有可能是一个乱指针,造成debug程序的时候,程序停止在某一行然后不往下执行,也看不到出错信息。与2问题相同,此时都要考虑在变量初始化时赋初值的问题。
8.10 基本完成word 和 sentence的功能,只剩下review的功能了。
这段时间主要完成的事情。
1.和合作者谈条件的事情,还未圆满解决。蛋糕都没有,就要想着怎么分了,的确没有经验。
2.基本掌握,如何从coredata中存储,提取,查找,更新数据。
3.@property和@synthesize 的具体实现,了解@property(retain)的含义,并且要注意自己写的setter函数,对于新指针的retain和对于旧指针的release,避免内存泄露。
4.给代码加上source controll,这对于版本的维护有帮助,也方便自己查看修改了的代码。
5.尽量把公共的部分,例如speaker,coredata相关的 等,放到appdelegate中实现,并给出接口,这样在各个viewController中就可以方便的使用了。
8.12 完成各界面之间的串接及start study