iOS中的一些细节
1.
在使用单例模式时一般使用allocWithZone
因为alloc最终还是会调用allocWithZone进行分配空间
2.
synchronized
线程锁(互斥锁)
优点:能防止多线程抢夺资源造成的数据安全问题
缺点:需要消耗大量的CPU资源
3.
GCD的队列类型
并发队列:自己创建的,全局
串行队列:主队列,自己创建的
4.
NSOperationQueue的队列类型
1.主队列[NSOperationQueue mainQueue]
2.其他队列(串行,并发):[[NSOperationQueue alloc] init];
5.
沙盒目录中的文件
Documents(不要将大文件放这里,否则有可能appstore审核不通过)
Library
-Caches (除非用户删掉,否则一直存在)
-Preference
tmp(随时有可能清空)
6.
//获取沙盒路径
NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
//获得文件名
NSString *filename = [app.icon lastPathComponent];
//计算出文件的全路径
NSString *file = [cachesPath stringByAppendingPathComponent:filename];
//加载沙盒中的数据
NSData *data = [NSData dataWithContentsOfFile:file];
7.
如何使一个线程常驻?
[[NSRunLoop currentRunLoop] addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentRunLoop] run];
使这个线程开启RunLoop,并给它添加Source即可
8.
自动释放池什么时候释放?
在RunLoop唤醒时创建自动释放池,
在RunLoop休眠之前会释放
9.什么是RunLoop?
运行循环,跑圈,
其实它的内部就是do-while循环,在这个循环内部不断处理各种任务
(比如Timer,Source,Observer)
一个线程对应一个RunLoop,主线程的RunLoop默认已经启动,
子线程的RunLoop是手动启动(调用run方法)
RunLoop只能选择一个Mode启动,如果当前模式中没有Source,Timer,Observer,
那么就直接退出RunLoop。
10.在开发中如何使用RunLoop?什么应用场景?
开启一个常驻线程(让一个子线程不进入消亡状态,等待其他线程发来消息,处理其他事件)
在子线程中开启一个定时器
在子线程中进行一些长期监控
可以控制定时器在哪种模式下运行
可以让某些事件在特定模式下执行
11.
NSString与NSData的相互转换
NSData *data = [@"str" dataUsingEncoding:NSUTF8StringEncoding];
NSString *str = [[NSString alloc] initWithData:self.responseData encoding:NSUTF8StringEncoding];
12.
在使用字典类别时,如何遍历字典中的元素
//遍历的所有的元素
[self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { [string appendFormat:@"\t%@",key];
[string appendString:@" : "];
[string appendFormat:@"%@,\n",obj]; }];
13.
NSHTTPURLResponse是NSURLRequest的子类
获取请求头,响应码,从这个类中获取。
14.
获取MIMEType类型
NSString *url = @"file:///Users/DDZ/Desktop/ARC.png";
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
NSURLResponse *response = nil;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
NSLog(@"%@",response.MIMEType);
15.
NSURLConnection的一些坑
NSURLConnection在主线程发送请求,正常可以接收服务器回传的data
但是如果将其放在子线程中,将接收data失败
原因:
因为主线程中有RunLoop,它会自动关联起来,来不断的接收data
子线程没有RunLoop,所以接收失败,
如果启动子线程的RunLoop则可以正常使用
iOS中的一些细节的更多相关文章
- iOS应用发布中的一些细节
iOS应用发布中的一些细节 前言 这几天最大的新闻我想就是巴黎恐怖袭击了,诶,博主每年跨年都那么虔诚地许下“希望世界和平”的愿望,想不到每年都无法实现,维护世界和平这么难,博主真是有心无力啊,其实芸芸 ...
- IOS中调用系统的电话、短信、邮件、浏览功能
iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 2015-01-13 09:16 by KenshinCui, 26990 阅读, 35 评 ...
- ios中的事件处理、响应者链条以及第一响应者
在ios中,事件UIEvent类来表示,当一个事件发生时,系统会搜集的相关事件信息,创建一个UIEvent对象,最后将该事件转发给应用程序对象(UIApplication).日常生活中,主要有三种类型 ...
- 在iOS中怎样创建可展开的Table View?(下)
接上篇:在iOS中怎样创建可展开的Table View?(上) 展开和合拢 我猜这部分可能是你最期望的了,因为本次教程的目标将会在在部分实现.第一次我们设法让顶层的cell,在它们点击的时候展开或者合 ...
- 浅谈iOS中的视图优化
引言: 让我们来思考几个问题,你开发过的产品,它还有可以优化的地方吗?能增加它的帧率吗?能减少多余的CPU计算吗?是不是存在多余的GPU渲染?业务这点工作量对于越来越强大的设备面前显得微不足道,但作为 ...
- iOS推送服务细节回顾
iOS推送服务细节回顾 之前在做推送功能时候,就总结过一系列证书的制作,OC代码实现和服务器搭建等经验.又过了一段时间了,前前后后对推送服务做了多次的完善和优化,有iOS客户端的,还有本地服务器端的. ...
- 在iOS中获取UIView的所有层级结构 相关
在iOS中获取UIView的所有层级结构 应用场景 在实际 iOS 开发中,很多时候都需要知道某个 UI 控件中包含哪些子控件,并且分清楚它们的层级结构和自个的 frame 以及 bounds ,以便 ...
- iOS中崩溃调试的使用和技巧总结 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博 在iOS开发调试过程中以及上线之后,程序经常会出现崩溃的问题.简单的崩溃还好说,复杂的崩溃就需要我们通过解析Cras ...
- iOS中消息传递方式
iOS中消息传递方式 在iOS中有很多种消息传递方式,这里先简单介绍一下各种消息传递方式. 1.通知:在iOS中由通知中心进行消息接收和消息广播,是一种一对多的消息传递方式. NSNotificati ...
随机推荐
- 为什么房间的 Wi-Fi 信号这么差
最近把家里主卧整成了个小影院,由于之前房子装修时网线端口与电源插口布置太少,导致家庭网络架设变得麻烦起来,最后终于通过「无线中继」技术达到了全屋满格 Wi-Fi 的效果. 在 Wi-Fi 架设过程中, ...
- 关于我 — About Me
个人简介 姓名:周旭龙 关注:.NET开发技术.Web前端技术 邮箱:edisonchou@hotmail.com GitHub: https://github.com/edisonchou 主要经历 ...
- 网站使用https协议
了解https HTTPS 是以安全为目标的 HTTP 通道,即 HTTP 下加入 SSL 加密层.HTTPS 不同于 HTTP 的端口,HTTP默认端口为80,HTTPS默认端口为443. SSL ...
- MySql免安装版安装配置,附MySQL服务无法启动解决方案
文首提要: 我下载的MySQL版本是:mysql-5.7.17-winx64.zip Archive版:系统:Windows7 64位. 一.解压文件 下载好My ...
- 【Win10 应用开发】使用“实时可视化树”工具查看应用界面元素
记得有朋友问老周,系统中的“计算器”应用的界面菜单是怎么做的.其实,你可以用VS 2015的新工具来查看它的界面结构. 实时可视化树工具只能查看XAML定义的界面,如WPF和Win App.现在,Wi ...
- BOM,DOM,ECMAScripts三者的关系
一:DOM 文档对象模型(DOM)是表示文档(比如HTML和XML)和访问.操作构成文档的各种元素的应用程序接口(API) DOM是HTML与JavaScript之间沟通的桥梁. DOM下,HTM ...
- IE开发人员工具之实用功能讲解
F12快捷键调出开发人员工具 一.JS的内容格式化 1.内容较乱的js脚本: 2.勾选下面两项即可进行格式化脚本:自动换行与格式化JS 3.调理清楚的脚本 二:清空控制台 1.右键->清空 2. ...
- 【原】使用Bmob作为iOS后台开发心得——云端代码添加其他User的Relation关系
本文转载请注明出处 —— polobymulberry-博客园 问题描述 我在User表中增加了两个列,分别为“我关注的人”(Relation关系)和“我的粉丝”(Relation关系)当我关注某个人 ...
- Vertica删除历史分区数据
假设test用户下创建的t_jingyu表 vsql -Utest -wtestpwd create table t_jingyu( col1 int, col2 varchar, col3 time ...
- RPC框架实现 - 通信协议篇
RPC(Remote Procedure Call,远程过程调用)框架是分布式服务的基石,实现RPC框架需要考虑方方面面.其对业务隐藏了底层通信过程(TCP/UDP.打包/解包.序列化/反序列化),使 ...