注意点一
removeFromSuperviewios
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中对事件响应具备举足轻重的做用,一般两个重叠的控件,处在上层的会优先响应;app
从上面文档的描述,咱们能够看到,这两个特性,也是view在操做时候的核心,即一个view的操做关系到两个方面,视图结构和响应者链。
removeFromSuperview,相似一个剪枝,执行此函数,就等于在树形结构中找到该节点,剪去该节点及其子节点,而并不是只是剪去该节点本身。同时,另外一个操做就是把该对象从响应者链中移除。ide
- (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;this
注意点二:sleep 和usleep
sleep()中参数为秒,usleep()中参数为微秒spa
参考文章:http://blog.csdn.net/likendsl/article/details/7573504 .net