- 博客(8)
- 收藏
- 关注
原创 MPMovieplayerviewcontroller播放结束后自动消失的解决方案
class func showPlayerWithFile(path: String?, presentedViewController: UIViewController) { guard let pa = path else { return } autoreleasepool { Dispatch
2016-12-29 16:18:48
4538
原创 Swift3 MPMoviePlayerViewController的使用,iOS播放视频
iOS播放视频文件一般使用 MPMoviePlayerViewController 和 MPMoviePlayerController。这两者的区别就是MPMoviePlayerViewController里面包含了一个MPMoviePlayerController.下面是我自己封装的一个调用播放器的方法,用Swift3.0写的import UIKitimport MediaPlay
2016-12-28 16:24:24
5988
原创 Xcode8 查看模拟器沙盒目录的方法
自从升级到Xcode8之后,所有的插件都被禁用了,那么应该如何进入模拟器的沙盒目录呢?NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSLog(@"%@", paths[0]);打开Finder,点前往把打印出来的path复制到输入框中按回
2016-12-28 12:32:57
9903
原创 优化iOS程序性能的25个方法
1. 用ARC管理内存ARC(Automatic ReferenceCounting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露。它自动为你管理retain和release的过程,所以你就不必去手动干预了。忘掉代码段结尾的release简直像记得吃饭一样简单。而ARC会自动在底层为你做这些工作。除了帮你避免内存泄露,ARC还可以帮你
2016-12-23 16:16:45
9649
3
原创 iOS 使用CoreData处理大量数据
在CoreData中想要更新大量数据,我们往往要将大量修改后的 NSManagedObject 加载到 NSManagedObjectContext 中并保存,这会占用大量内存,如果超过了系统限制,那么数据就有可能丢失。如果采取批处理的方式,即一小批一小批的更新 NSManagedObject 并保存到 NSManagedObjectContext 中,但这样会花费很多时间,用户体验较差。
2016-12-16 17:27:30
7687
原创 abort()和exit()的区别
exit和abort都是用来终止程序的函数,他们的不同如下:exit会做一些释放工作:释放所有的静态的全局的对象,缓存,关掉所有的I/O通道,然后终止程序。如果有函数通过atexit来注册,还会调用注册的函数。不过,如果atexit函数扔出异常的话,就会直接调用结束。abort:立刻结束程序,没有任何清理工作。百度上是这么解释abort的:abort()函数首先
2016-12-16 11:31:22
8286
原创 iOS10 远程推送适配
iOS10推送新增了UserNotifications Framework,使用起来其实很简单。只是在iOS10以上系统上点击通知栏,回调方法不再走原来的这两个方法- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {}- (v
2016-12-08 13:57:37
4663
原创 iOS 修改tabbaritem的title与icon的间距
UITabBarItem有两个属性,可以调整title和icon的间距,甚至做到title在上,icon在下。for (UITabBarItem * i in t.tabBar.items) { i.titlePositionAdjustment = UIOffsetMake(0, -4); i.imageInsets = UIEdgeInsetsMake(-1, 0, 1,
2016-12-02 10:54:15
8550
2
空空如也
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝