1:NSDictionary是不能用for in遍历的,可以用NSEnumerator。
2:添加节点([CCNode addChild])会增加孩子节点的引用计数,删除节点([CCNode removeChild: cleanup:])如果cleanup参数为YES,则会减少引用计数。
3:父节点被砍掉,子节点也都随着掉下来了。随后的某个时间,他们会被从内存中清除( 前提是引用计数为0),首先不需要为此担心内存,但是不能假设清理时间。
3:单例节点,由于不会被释放,所以在父节点被删除前应先移除此单例,否则该单利节点添加到其他父节点时,将被提示“一个孩子不能有两个爹”。
4:[CCNode schedule:interval:]会先等待后执行,不过作为定时器用是很不合适的,因为当节点没加入到主场景中时,他是不工作的。
5:今晚的大量试验证明,引用计数的值不绝对可靠,系统可能会根据使用频率增加计数以提高效率。
7:尽可能不要返回方法内定义并分配的对象(就是不要返回指针和对象都在方法内分配的对象指针),除非使用工厂/自动释放池。
8:@property的readonly选项只保证不生成被声明者的set方法,不表示被声明者内容不被改变,对于类对象成员来说,不被改变的只有指向类的指针。
9:@property的readonly表示不能被修改,但默认assign是不够的,加上retain/copy才能让你在私有扩展中改变他的属性。为你的readonly对象属性加上合适的retain/copy声明吧。你现在不用,但不说明你将来也不会用,出来混迟早都要还的!
10:尽可能不把可修改的类成员整个暴露出去,比如NSMutableDictionary。这可能会导致自己被释放了,其他线程还在拼命遍历而无法发现的情况,让你头疼死。
11:全面普及ARC还需要时间,很多第三方类库不能完美支持。遗憾的是cocoa内存问题很复杂,他管理一半,你管理一半。掺上cocos2d就更复杂。但是,“谁污染,谁清理。”是一条真理,切记。一切都开始simple is beautiful了!
12:晚上不睡觉还是有成果的。每天晚上都不睡觉能成仙。