您的位置:首页 > 其它

基础知识三

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打开时发现报错了;

Xcode8iOS10SDK 上新建 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 内有实物奖励的,不能使用苹果产品(例如 iPhoneiPad 等)作为奖励;

没有提供恢复内购的方法:增加一个 “恢复购买记录” 的按钮即可;

未注册时不能使用与帐号无关的功能;

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
7 .
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
返回的对象里所包含的对象的地址和之前都是一样的,即容器内对象都是浅拷贝;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  基础知识 OC