基础知识三
2017-03-11 15:44
78 查看
基础知识三
1 .UITextView和
UITextField区别
UITextView继承自
UIScrollView;
UITextField继承自
UIControl;
UITextView支持多行;
UITextField支持单行;
UITextView没有
placeholder属性;
UITextField有
placeholder属性;
UITextView的键盘类型比
UITextField多一个
UIKeyboardTypeWebSearch;
UITextView不可以设置文字垂直对齐方式(需要自己实现);
UITextField可以设置(系统自带的属性,因为
UITextField继承自
UIControl,这是
UIControl的属性);
2 . iOS10 有什么特性
UITabBarController中的改进:
tabBarItem上的文字颜色可以自定义;
App中的字体跟随手机系统设置变化大小;
ios10推出一个全新的动画API:
UIViewPropertyAnimator,该类具有以下特点,可中断性、可擦除、可反转性、丰富的动画时间控制功能;
UIApplication对象中
openUrl被废弃:打开网页或者进行跳转换成了一个带回调的方法;
刷新控件
UIRefresh Control: iOS系统自带的刷新控件支持所有的
UIScrollView以及其子类,比如说
UICollectionview、UITableView;
在 iOS10 里面,开发者可以使用 Siri SDK ,从此开发者可以使用原生 API提供语音搜索、语音转文字消息甚至更多常见语音功能;
Message App Extension:在 iOS10 里面开发者可以给
Message.app提供两种
App Extension,分别是可以提供一个表情包(英文名叫Sticker Pack),和一个自定义的界面;
User Notifications:这个 API 让你可以处理本地或远程的用户通知;
Speech recognition:语音识别 API,可以把音频流实时的转换为文本;
第三方键盘的改进:之前第三方键盘不能很方便的拥有长按地球键的功能,现在有了;
对隐私权限的管理更加严格:比如访问摄像头、麦克风等硬件,都 需要提前请求应用权限;
App Extensions:上面第2条已经提到, iOS10 最重要的开发特点就是允许第三方应用对自带基础 app 的拓展关联,全新7中
App Extension:
Call Directory(VoIP回调)、
Intents(接Siri、Apple map等服务)、
Intents UI(接Siri、Apple map等服务的自定义界面)、
Messages(iMessage拓展)、
Notification Content(内容通知)、
Notification Service(服务通知)、
StickerPack(iMessage表情包);
3 . Xcode8 的特性
Xcode8 更新保存的
xib配置在 Xcode7 上有些识别不了,在 Xcode8 上打开的项目,尤其是对于
xib工程,在变动后不要随意点击保存,否则当用 Xcode7打开时发现报错了;
在 Xcode8 、 iOS10SDK 上新建 iOS 工程,将看到
Message Application和
Sticher Pack Application,后者是为
iMessage表情包专门准备的,但是不需要代码,在新建工程时可以选择
Sticher Pack Application,通过这种方式可以简单地通过添加图片来在
iMessage中添加表情包;
Xcode8 上调试工程啥也没干就打印一堆烂七八糟的东西。可以禁用这些消息,点击 Product-》Scheme-》Edit Scheme;
字体的改变: Xcode8 中用的字体是 San Francisco Mono 字体;
代码高亮当前行;
代码调试支持
Runtime;
Xcode8 之后必须使用代码签名,包括第三方 SDK 也需要代码签名;
文档分为
Swift和
OC文档。界面可以展示运行时的问题;
4 .
do while循环
这个循环与
while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此
do-while循环至少要执行一次循环语句。
do-while循环内执行
continue之后会执行
while中的条件; 当你执行一段代码到一半,想跳过剩下的一半的时候,如果你正处于
do while循环中,则能用
break达到这个目的.
5 . 提交苹果审核 APP 被拒原因总结
应用内包含检查更新功能:iOS 应用的更新必须通过 App Store 进行,自身 APP 内不能包含提示更新功能。从 2015年3月 起开始;
使用第三方登陆时未做安装监测:接入第三方登陆要监测是否安装了第三方客户端,未安装时不要显示对应按钮。苹果在条款中有声明不允许 iOS 应用的正常使用需要依赖另外一个 APP;
采集设备 IDFA 但应用没有广告功能;
含 UGC (用户产生内容,如发帖)却未提供用户协议及举报功能;
上传时没有使用真实的应用截图;
应用必须使用邀请码才能注册:苹果要求应用不能限制只有部分用于可以使用;
应用内出现第三方移动平台的名字或图表:在 APP 内、截图等任何地方提到 安卓 、 Android 等文字、图标、系统界面都会被拒;
App 内涉及奖励,未声明与苹果无关: APP 内有实物奖励的,不能使用苹果产品(例如 iPhone 、 iPad 等)作为奖励;
没有提供恢复内购的方法:增加一个 “恢复购买记录” 的按钮即可;
未注册时不能使用与帐号无关的功能;
iPhone 应用在 iPad 上无法正常显示;
侵犯第三方版权;
应用截图、名称、描述等出现不雅词汇;
应用出现 beta版 、 测试版 字样;
注册缺少隐私政策;
应用出现崩溃、加载失败等bug;
应用描述、截图和应用功能不符;
应用内包含其他应用推荐功能;
应用包含不正确的诊断功能;
应用提交的 新版本与上一版本差异过大;
应用违反当地法律法规;
应用作者名与金融机构名字不一致:针对 理财 、 P2P 等金融类相关产品,苹果增加的规定;
应用提供功能过于简单;
6 . 网络七层协议
名称 | 主要功能 | 典型设备 | 典型协议、标准和应用 |
---|---|---|---|
应用层 | 用户接口、应用程序 | 网关(又称网间连接器、协议转换器) | FTP、HTTP、TELNET |
表示层 | 数据表示、压缩和加密 | 网关 | ASCLL、PICT、TIFF、JPEG/MPEG |
会话层 | 会话的建立和结束 | 网关 | RPC、SQL、NFS、X WINDOWS、ASP |
传输层 | 端到端控制Transport | 网关 | TCP、UDP、SPX |
网络层 | 路由、寻址Network | 路由器 | IP、IPX、APPLETALK、ICMP |
数据链路层 | 保证无差错的疏忽链路的data link | 交换机、网桥、网卡 | 802.2、802.3ATM、HDLC、FRAME RELAY |
物理层 | 传输比特流Physical | 集线器、中继器 | V.35、EIA/TIA-232 |
SDWebImage图片处理原理
显示
placeholderImage;
SDImageCache从缓存中查找图片是否已经下载;
先从内存图片缓存查找是否有图片;如果内存中有图片缓存,显示图片;如果内存中没有,生成
NSInvocationOperation添加到执行队列开始从硬盘查找图片缓存;
如果硬盘中有,将图片添加到内存缓存中(如果空闲内存过小,会先清空内存缓存),显示图片;如果硬盘中没有,说明该图片没有缓存,需要下载图片,共享或重新生成一个下载器
SDWebImageDownLoader开始下载图片;
开始图片网络请求,下载数据;
数据下载完成后交给
SDWebImageDecoder做图片解码;
回调展示图片;
图片保存到硬盘缓存和内存缓存;
SDImageCache初始化会注册一些通知,在内存警告或退到后台的时候清理内存图片缓存,应用结束的时候清理过期图片;
8 .
NSArray和
NSMutableArray在
Copy和
MutableCopy下的内存是怎样的
[NSArray copy] // 浅复制,指针复制(内存地址不变),引用计数加1,同时 array 里面的对象的地址都是一样的; [NSMutableArray copy] // 深复制(内存地址改变),重新 Alloc 一个 NSArray 对象(重新分配一个内存地址),并返回,方法接受者本身内容(曾、减等操作,非包含对象内容的变化)改变不影响返回对象,同时返回对象的内容不可以改变,同时array里面的对象的地址都是一样的; [NSArray mutableCopy] // “false深复制” 重新Alloc一个NSMutableArray 并返回,并且2者的本身对象的增加,删除等操作不影响另一者。同时array里面的对象的地址都是一样的; [NSMutableArray mutableCopy] // 同上
总结:
对于不可变对象,
copy都是浅复制,即指针复制。
mutableCopy都是
Alloc一个新对象返回;
对于可变对象,
copy和
mutableCopy都是
Alloc新对象返回;
不论是可变还是不可变对象,
copy返回的对象都是不可变的,
mutableCopy返回的对象都是可变的;
容器类对象,不论是可变的还是不可变的,
copy,
mutableCopy返回的对象里所包含的对象的地址和之前都是一样的,即容器内对象都是浅拷贝;
相关文章推荐
- 基础知识-如何分辨自己处于内网还是外网(公网)?是否有网络防火墙?是否支持UPnP?
- DOS命令初学者基础知识学习
- 色彩系列教程(1):基础知识
- 摄影基础知识汇总
- 建立个人网站的基础知识三:软件方面
- OLAP与OLTP的一些基础知识
- 标准化基础知识
- 00014.网络基础知识
- Linux下C语言编程--基础知识
- Google关键词广告基础知识问答
- 复习一下 .Net: delegate(委托)、event(事件) 的基础知识,从头到尾实现事件!
- 刻录基础知识之刻录方式
- 第二讲 Java语言基础知识
- 《基于RealSystem的远程教学系统》第二部分 基础知识及协议部分
- JAVA基础知识精华总结
- Netty2: 事件驱动的NIO框架(基础知识)
- 模块的一些基础知识
- IP地址基础知识
- 建立个人网站的基础知识二:美工方面
- 网页配色基础知识