笔记
note.jpg- iPad2的硬件不支持OpenGLES3.0,支持2.0,其创建的纹理需要是2的幂,大于实际需要的纹理大小即可;USB通信需要MFI认证:(。
- 创建自定义viewController与xib关联时要指定file's owner,还要把viewController的view与xib的root view连线。
- RPScreenRecorder sharedRecorder stop后要显示录制到的视频的预览页RPPreviewViewController必须先用变量持有它的引用,然后再presentViewController
- AsyncUdpSocket.h的包发送是在当前线程的runloop中,子线程中需要手动启动runloop,线程不安全;早期版本没有使用arc,需要在compile sources中加上-fno-objc-arc的compile flag。
GCDAsyncUdpSocket.h的包发送是用gcd dispatch到初始化时同一个serial队列中,保证了线程安全。 - 观察程序运行后xcode对cpu和memory的监听,如果memory一直在增长,说明有内存泄漏的c/c++代码,控制台可能会打印ReceiveMemoryWarning。
- UIResponder:事件响应链,UIApplication->AppDelegate->UIWindow-> UIViewController-> UIViewController的view->superview->view,这个类被UIApplication、AppDelegate 、UIViewController、UIView等类继承;可通过响应链向上查找对应的UIViewController单例。
- UIGestureRecognizer可取消接收cancel事件cancelsTouchesInView,还有delaysTouchesBegan、delaysTouchesEnded等设置;UIGestureRecognizerDelegate代理,name打印。
- touchesBegan、touchesMoved、touchesEnded、touchesCancelled应该总是使用参数touches的UITouch,event参数都是相同的,event的allTouches是event触发的包括本view还有其他的所有的UITouch
- 播放音频pcm流,使用c++实现的OpenAL比oc实现的AudioQueue的实现实测要好不少,原理一般都是乒乓方式交错处理buffer。
- iOS序列化与反序列化,这个一句代码用runtime实现的不错。
- NSUndoManager有时候会用到。
十年磨一剑
网友评论