iOS 小知识

1、iOS8 下,tableView要实现左滑删除,必须要实现这个代理方法,哪怕里面什么都没写:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

2、iOS8 下,QLPreviewController 必须实现这个代理方法:

- (CGRect)previewController:(QLPreviewController *)controller frameForPreviewItem:(id <QLPreviewItem>)item inSourceView:(UIView * _Nullable * __nonnull)view

3、将沙盒里文件的路径转NSURL时,应该用这个方法去转换:

+ (NSURL *)fileURLWithPath:(NSString *)path isDirectory:(BOOL)isDir

4、创建一个信号量

/**
 创建一个信号量
 */
static dispatch_semaphore_t web_video_source_semaphore() {
    static dispatch_semaphore_t web_video_source_semaphore;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        web_video_source_semaphore = dispatch_semaphore_create(0);
    });
    return web_video_source_semaphore;
}

dispatch_group_t group = dispatch_group_create();
        dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            // TODO:先要执行的代码
            .....
            dispatch_semaphore_wait(web_video_source_semaphore(), DISPATCH_TIME_FOREVER);
        });
        dispatch_group_notify(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            // TODO:后执行的代码
            
        });

5、 使用 UIGraphicsBeginImageContext 在iPhone 7P以上,会失真。
应该使用 UIGraphicsBeginImageContextWithOptions

6、不能在 viewWillAppear 禁止手势,即

self.navigationController.interactivePopGestureRecognizer.enabled = NO;

如果要禁止手势返回,可以在viewDidAppear里实现上述方法。

7、分享到APP内的文件,存放在DocumentDirectory中的 Inbox/文件夹里面,Inbox/的权限是可读可删除,但是不可用NSFileManager写入文件。

8、CAAnimation,如果设置了代理,一定要写代理方法,不然会导致循环引用,导致控制器或者view无法释放

未完待续。。。
OK!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容