注意点一
removeFromSuperview
Unlinks the receiver from its superview and its window, and removes it from the responder chain.
译:把当前view从它的父view和窗口中移除,同时也把它从响应事件操作的响应者链中移除。
分析:
这里有两个关键点,可以帮助我们理解在ios当中view是怎么来组织的:a.视图的组织形式;b.响应者链。
在ios当中,视图的设计模式可以看做是组件模式,即以树作为存储的数据结构,这种数据结构具有明确的两个特点:
1.父子关系分明,从根节点出发,通过叶节点向下扩展,同一枝的上一个节点就是下一个节点的superview,下一个节点就是上一个节点的subview;不同枝如果同层,则为兄弟节点。
2.layer关系分明,layer在ios中对事件响应具有举足轻重的作用,通常两个重叠的控件,处在上层的会优先响应;
从上面文档的描述,我们可以看到,这两个特性,也是view在操作时候的核心,即一个view的操作关系到两个方面,视图结构和响应者链。
removeFromSuperview,类似一个剪枝,执行此函数,就等于在树形结构中找到该节点,剪去该节点及其子节点,而并非只是剪去该节点自己。同时,另一个操作就是把该对象从响应者链中移除。
- (void)removeFromSuperview
Discussion
If the receiver’s superview is not nil, the superview releases the receiver. If you plan to reuse a view, be sure to retain it before calling this method and release it again later as appropriate.
译:如果当前view对象的父视图不为空,则父视图会release一次当前视图对象。如果你还想重用当前view,你应该在调用 removeFromSuperview之前,retain一次当前view对象,但不要忘记,在恰当的时候要release它,以确保没有内存泄露。
Never call this method from inside your view’s drawRect: method.
译:永远不要在你的view的drawRect方法中调用removeFromSuperview;
注意点二:sleep 和usleep
sleep()中参数为秒,usleep()中参数为微秒
参考文章:http://blog.csdn.net/likendsl/article/details/7573504
来源:oschina
链接:https://my.oschina.net/u/1024566/blog/178564