1、ios 开发账户中最多能添加100台设备号
2、最多可以为每个内购项目创建100个促销代码
3、MVC模式中的M:模型、V:视图、C:控制器
优点:
低耦合性
高重用性和可适用性
较低的生命周期成本
4、UDID是由40位十六进制字符串组成
5、在ios开发环境下后缀为.a的文件又叫静态库
6、iPhone、iPad、iTouch中使用的架构是arm
7、关于应用程序目录在更新、恢复的过程的变化,一下描述正确:
在应用程序更新过程中,/Documents目录会被保留
在备份过程中/tmp目录将不会被备份
在应用程序更新过程中,/Library/Preferences目录会被保留
8、iPhone上不能被应用程序直接调用的的系统程序是日历
9、应用程序大小超过20MB时只能通过WiFi从App Store上下载
10、可上传至App Store的app应用最大体积是4GB
11、关于XML和JSON,以下说法正确:
XML是一种类似HTML的语言,JSON是一种轻量级的数据交换格式
JSON和XML之间可以互相转换
12、在Xcode上创建一个ios工程,会自动添加进工程的Frameworks有:UIKit.framework(UI框架)、Foundation.framework(基础框架)、CoreGraphics.framework(核心图形框架)
13、面向对象的特性包括:封装、继承、多态
封装:
封装性就是隐藏实现细节,,仅对外公开接口。类是数据与功能的封装,数据就是成员变量,功能就类方法或对象方法,对数据的封装,也就是对成员变量的封装,不封装的缺点:当一个类把自己的成员变量暴露给外部的时候,那么该类就失去对该成员变量的管理权,别人可以任意的修改你成员变量。封装就是将数据隐藏起来,只能用此类的方法才可以读取或者设置数据,不可被外部任意修改是面向对象设计本质。降低了数据被误用的可能性! ,提高代码的灵活性。OC中也是有四种访问权限修饰符:@public、@protected、@private、@package。其中默认的修饰符是@private。但是这里要注意的是:OC中的方法是没有修饰符的概念的,这个和Java有很大的区别,一般都是公开访问的,即public的,但是我们怎么做到让OC中的一个方法不能被外界访问呢?
继承:
继承是类中的一个重要的特性,他的出现使得我们没必要别写重复的代码,可重用性很高。
注意:
-基类的私有属性能被继承,不能在子类中访问。
-OC中的继承是单继承:也就是说一个类只能一个父类,不能继承多个父类
-子类与父类的关系也称为isA(是一个)关系,我们说 子类isA父类,也就是子类是一个父类
-继承的合理性:引用《大话西游》里的一句话来描述继承的。“人是人他妈生的,妖是妖他妈生的!”
继承相关特性
1.方法重写
- 在子类中实现与父类中同名的方法,称之为方法重写;
- 重写以后当给子类发送这个消息的时候,执行的是在子类中重写的那个方法,而不是父类中的方法。
- 如果想在子类中调用被子类重写的父类的方法,可以通过super关键字
- 使用场景:当从父类继承的某个方法不适合子类,可以在子类中重写父类的这个方法。
2.继承中方法调用的顺序
-在自己类中找
-如果没有,去父类中找
-如果父类中没有,就去父类的父类中
-如果父类的父类也没有,就还往上找,直到找到基类(NSObject)
-如果NSObject都没有就报错了
-如果找到了就执行这个方法,就不再往后查找了
3.继承的注意事项
-子类不能定义和父类同名的成员变量,私有成员变量也不可以;因为子类继承父类,子类将会拥有父类的所有成员变量,若在子类中定义父类同名成员变量 属于重复定义。
-OC类支持单一继承,不支持多继承;也就是说一个类只能有一个直接父类
-OC类支持多层继承
多态:
程序中的多态:父类指针指向子类对象
多态的条件
-有继承关系
-子类重写父类方法
-父类指针指向子类对象
表现:当父类指针指向不同的对象的时候,通过父类指针调用被重写的方法的时候,会执行该指针所指向的那个对象的方法
多态的优点
-多态的主要好处就是简化了编程接口。
它允许在类和类之间重用一些习惯性的命名,
而不用 为每一个新加的函数命名一个新名字。这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类的区分开来。
-多态也使得代码可以分散在不同的对象中而不用试图在一个函数中考虑到所有可能的对象。
这样使得您的代码扩展性和复用性更好一些。当一个新的情景出现时,您无须对现有的代码进行 改动,而只需要增加一个新的类和新的同名方法。
多态的原理:
- 动态绑定:
- 动态类型能使程序直到执行时才确定对象的真实类型
- 动态类型绑定能使程序直到执行时才确定要对那个对象调用的方法
- OC不同于传统程序设计语言,它可以在运行时加入新的数据类型和新的程序模块:动态类型识别,动态绑定,动态加载
- id类型:通用对象指针类型,弱类型,编译时不进行具体类型检查
多态的注意点
如果存在多态,父类是可以访问子类特有的方法
如果不存在多态,父类是不可以访问子类特有的方法的
14、CocoaTouch框架中,用于数据管理的方法有:CoreData、SQLite
15、动态语言的特性:在运行时替换一个类、在运行时修改对象中的方法、在运行时增加对象的方法
OC的动态特性体现在三个方面:
动态类型、动态绑定、动态加载
1.1 动态类型
简单来讲,动态类型就是id类型,它区别于静态类型(如int类型、NSString等基本类型,在编译阶段会被识别,静态类型可以提高程序的可读性),这些id类型只有在运行的时候(runtime)才会根据语境来识别,编译时不会被识别。
1.2动态绑定
一个对象何时调用指定的方法不是在编译时决定,而是在运行时决定的。OC中,对象调用函数称为消息发送。[obj msgSend]; obj为消息的接受者,msgSend为消息名
1.3动态加载
举个例子,开发的时候icon图片的时候在Retina设备上要多添加一个张@2x的图片,当设备更换的时候,图片也会自动的替换。
再有就是例如运行时加载新类,以及方法的动态加载等。
16、ios存储方式有:
XML属性列表(plist)归档
Preference(偏好设置)
NSKeyedArchiver归档(NSCoding) //归档
SQLite3
Core Data
17、IP Phpne的原理是IPV6
18、Xcode 9 版本带来了Wireless development无线调试功能
19、当开发者免费加入Apple开发者计划之后,以下是正确的说法:
无法使用beta版的ios SDK
无法向App Store发布产品
20、UIResponder可以让继承它的类响应移动设备的触摸事件,由于可能有多个对象响应同一个事件,ios将事件沿响应链向上传递
21、plist属性列表、对象归档、SQLite3、Core Data技术可以实现ios的数据持久化
22、Core Data技术支持SQLiteStore、XMLStore、BinaryStore、InMemoryStore类型的持久化数据存储方式
23、ios设备支持手机基站定位、WiFi定位、GPS定位
24、CLLocationManager 精准度要求
kCLLocationAccuracyBest;// 精度要求最高,适合个体较小的定位,如个人、汽车定位
kCLLocationAccuracyNearestTenMeters;//10米适合个体较小的定位,如个人、汽车定位
kCLLocationAccuracyHundredMeters; //百米,适合个体较大的定位,如酒店、机场等建筑物定位
kCLLocationAccuracyKilometer; //千米
kCLLocationAccuracyThreeKilometers; //3千米
25、CLGeocoder可以进行地理编码和反地理编码的工作
26、在ios设备中,陀螺仪的主要用途有:
手机的导航功能
增强拍摄时的防抖性
在游戏中可可以通过陀螺仪控制方向
摇一摇功能
27、陀螺仪主要包含陀螺仪针、放置轴、方向坐标系、转子等组件
28、加速计只能侦测物体的移动方向,也可以侦测物体的水平改变状态,但不具备精确侦测物体角度改变的能力,也无法计算物体移动的激烈程度
29、在ios开发中,陀螺仪和加速计的使用是通过Core Motion框架实现的
30、CMMotionManager对象的accelerometerUpdateInterval属性的值为0.1,表示每秒钟更新10次的加速状态
31、本地化的资源文件,在应用程序的Bundle中,会根据语言的不同分离成不同的文件
32、描述应用程序的关键词可以用来帮助客户在App Store中搜索到精准的结果,它的长度限制在100个字符以内
33、NSFileManager是用来管理和操作文件、目录的文件系统相关联内容的类。它隶属于Foundation框架
34、蓝牙包括准备(standby)、广播(advertising)、监听扫描(Scanning)、已连接(Connected)
35、蓝牙4.0支持ios6、ios7
36、ios的系统框架可以分为核心系统层(Core OS layer)、核心服务层(Core Services layer)、媒体层(Media layer)、可触摸层(Cocoa Touch layer)
iOS系统分为可分为四级结构,由上至下分别为可触摸层(Cocoa Touch Layer)、媒体层(Media Layer)、核心服务层(Core Services Layer)、核心系统层(Core OS Layer),每个层级提供不同的服务。低层级结构提供基础服务如文件系统、内存管理、I/O操作等。高层级结构建立在低层级结构之上提供具体服务如UI控件、文件访问等。
可触摸层(Cocoa Touch Layer)
可触摸层主要提供用户交互相关的服务如界面控件、事件管理、通知中心、地图,包含以下框架:
● UIKit(界面相关)
● EventKit(日历事件提醒等)
● Notification Center(通知中心)
● MapKit(地图显示)
● Address Book(联系人)
● iAd(广告)
● Message UI(邮件与SMS显示)
● PushKit(iOS8新push机制)
媒体层(Media Layer)
媒体层主要提供图像引擎、音频引擎、视频引擎框架。
● 图像引擎(Core Graphics、Core Image、Core Animation、OpenGL ES)
● 音频引擎 (Core Audio、 AV Foundation、OpenAL)
● 视频引擎(AV Foundation、Core Media)
核心服务层(Core Services Layer)
核心服务层为程序提供基础的系统服务例如网络访问、浏览器引擎、定位、文件访问、数据库访问等,主要包含以下框架:
● CFNetwork(网络访问)
● Core Data(数据存储)
● Core Location(定位功能)
● Core Motion(重力加速度,陀螺仪)
● Foundation(基础功能如NSString)
● Webkit(浏览器引擎)
● JavaScript(JavaScript引擎)
核心系统层(Core OS Layer)
核心系统层提供为上层结构提供最基础的服务如操作系统内核服务、本地认证、安全、加速等。
● 操作系统内核服务(BSD sockets、I/O访问、内存申请、文件系统、数学计算等)
● 本地认证(指纹识别验证等)
● 安全(提供管理证书、公钥、密钥等的接口)
● 加速 (执行数学、大数字以及DSP运算,这些接口iOS设备硬件相匹配)
37、Core ML机器学习框架支持ios、macOS、tvOS、watchOS
38、Core ML支持深度神经网络、循环神经网络、卷积神经网络、支持向量机
39、Core ML的已训练模型(trained model)是指在一组训练数据应用了某个机器学习算法后所生成的一组结果
40、Core ML支持那些机器学习模型神经网络 (Neural network)、组合树 (Neural networks)、支持向量机 (Support vector machines)、广义线性模型 (Support vector machines)、特征工程 (Feature engineering)、管道模型 (Pipeline models)
模型类型 支持的模型 支持的工具
神经网络 (Neural network) 前馈 (Feedforward)、卷积 (Convolutional)、循环 (Recurrent) Caffe / Keras 1.2.2
组合树 (Neural networks) 随机森林 (Random Forests)、提升树 (Boosted Trees)、决策树 (Decision Trees) scikit-learn 0.18 / XGBoost 0.6
支持向量机 (Support vector machines) 标量回归 (Scalar Regression)、多级分类 (Multiclass classification) scikit-learn 0.18 / LIBSVM 3.22
广义线性模型 (Support vector machines) 线性回归 (Linear Regression)、逻辑回归 (Logistic Regression) scikit-learn 0.18
特征工程 (Feature engineering) 稀疏向量矢量化 (Sparse Vectorization)、稠密向量矢量化 (Dense Vectorization)、分类处理 (Categorical Processing) scikit-learn 0.18
管道模型 (Pipeline models) 顺序链模型 (Sequentially Chained Models) scikit-learn 0.18
41、Core ML的运行需要使用 .mlmodel模型格式
42、NSLinguisticTagger的技术可以将自然语言的字符串标记为单词、确定此行和词根、划分地名和组织名、告诉您字符串使用的语言和语系
43、从在屏幕上点击你的app icon开始,到应用执行到main()方法或者执行到applicaionWillFinishLaunching的过程中,共执行了以下方法:
dulib loading time 载入动态库
ebase/binding time 重构和绑定
ObjC setup time 在Objective-C的运行时(runtime),需要对类(class),类别(category)进行注册
initializer time 这一份指代的是执行+initialize方法的时间
44、应用程序在后台一般可以运行10秒钟
45、method swizzling交换方法有以下几种实现方式:
利用method_replaceMethod替换方法的实现
利用method_exchangeImplementations交换两个方法的实现
利用method_setImplementations来直接设置某个方法的IMP