2011/11/06~2012/02/12

2011/11/06~2011/12/24

不断调试c#改写成c++的behavior trees。由于c++没有内存管理机制,所以一旦搞错了delete的位置与对象的责任,就会导致奇怪的僵尸指针。

而由于tree本身也嵌套了不少层,所以要最简化tree才能调试出问题所在。花了整整一个月在调试与阅读c++内存管理相关的文章。终于还是严格简化了tree与代码,才调试出来问题所在。

同时也好好读了些状态机的例子,以防万一behavior trees无法调试成功选择。

NSBundle的官方文档也阅读了2遍。


2011/12/25~2012/01/10

由于behavior trees的parallel 节点需要并发运行子节点以完美模拟,而普通的linear sequence/selector节点是固定启动第一个设定的节点(所以万一可能有好几种都返回true的情况,它就总选择第一个返回true的情况)。就考虑是不是要用多线程完成,所以准备阅读官方的多线程部分。但官方推荐使用‘并发’的方法比直接写线程好,所以又阅读了官方的并发介绍与国内的一些经验总结。不断阅读中又了解了KVC与KVO。(在[Object-c基础编程2.0]的书中有一章介绍KVC的)。

考虑到游戏中有很多脚色,如果都大量用并发,会导致资源严重占用,所以简单脚色可以考虑用状态机,所以不用并发,而用随机调用的方法更好。

同时读了NSObject的一些方法,象forwardTargetForMessage,这更使我明白Object-c的动态性。所以behavior trees 可以用object-c实现,虽然没有模板功能,但是依靠动态性,完全可以自由的调用对象的方法,不需要模板,只是转换过来还要换换思路。

2012/01/12

问题:KVO不直接支持作为属性的NSSet,NSArray,Apple官方文档写的如果试图直接用AddObserver会Raise exception,必须要xxxx。参考了几篇文章,还不是很明白。貌似用CoreData会更方便。

参考:http://eschatologist.net/blog/?p=189

http://stackoverflow.com/questions/6403570/key-value-observing-an-nsmutableset

2012/02/02

1. 再此期间在阅读官方文档,Event handler,里面介绍了touch event , gesture recognizer , Motion Event, Core Motion。


2. 要良好使用xcode4,还是要记住一些常用方法,比如快速注释一块一行。

参考别人的经验 http://blog.csdn.net/gavinming/article/details/6197481

但是xcode里命令提示中的 f, c , t ...都代表了什么呢??比如f表示函数

这篇文章提醒了我们:http://stackoverflow.com/questions/6662395/xcode-intellisense-meaning-of-letters-in-colored-boxes-like-f-t-c-m-p-c-k-etc

虽然现在有强大的google,但是关键字用错了还是找不到我们的信息,就想说错了话别人不会刁我们一样。除非你正好使用关键字Code Sense,或者你把xcode help认真读了1~2个月。

3. 之前虽然读了cocurrent programming,但是一旦实际用上,还是有很多疑问的。

比如dispatch_queue_create,在官方文档里一段说道它可以创建serial queue。

可是后面一段又演示了使用dispatch_async与dispatch_syn在创建的queue上运行,让人误以为在上面可以并发运行。

那么dispatch_async与dispatch_sync到底有什么作用??

创建的queue真的只能非并发运行吗?

     答: 自定义的queue只能FIFO运行加入到自己里面的tasks,sync与async函数的差异是在于是否提交task到queue后立即返回。

参考:

http://stackoverflow.com/questions/4607125/usage-of-dispatch-sync-in-grand-central-dispatch

http://www.fieryrobot.com/blog/2010/06/27/a-simple-job-queue-with-grand-central-dispatch/

http://www.cppblog.com/kesalin/archive/2011/08/26/dispatch_queue_block.html


http://stackoverflow.com/questions/4607125/usage-of-dispatch-sync-in-grand-central-dispatch

2012/02/12

1. 在官方Local and Push Notification Programming Guide的最后介绍了binary interace,sample里使用了htons,htonl函数不知道是干嘛的?

   答:原因是主机在放大于一字节数据时在网络上传输要转换为网络格式,因为传送方与接受方可能是其他类型CPU,存放格式不同。

     参考:

     http://baike.baidu.com/view/567601.htm

     http://baike.baidu.com/view/569197.htm

     http://baike.baidu.com/view/569196.htm

     http://www.diybl.com/course/3_program/c++/cppsl/200899/141291.html

猜你喜欢

转载自blog.csdn.net/Marcus2006/article/details/7192793
今日推荐