iOS 小知识

2021-08-05  本文已影响0人  Mossion

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!

上一篇下一篇

猜你喜欢

热点阅读