对象2020年ios程序员工作总结

ios 5 0  时间:2021-02-08  阅读:()

一、判断题每题2分共2分

1 、 UITableView能够绑定多个数据源。 错

2、 一个UIViewControl ler可以管理多个UITableView。 对

3、 Object-c的类可以多重继承。 错

4、 objective-c类里面的方法只有两种,静态方法和实例方法。 对

5、 NSFi leManager和NSWorkspace在使用时都是基于进程进行单件对象的实例化。对

6、用类别增加方法时不能与原来类中的方法产生名称冲突。 错

7、 fra me指的是该view在本身坐标系统中的位置和大小。 错

8、 method是一个方法的名字 selector是一个组合体。 错

9、ARC是编译特性不是运行时特性在编译时编译器会自动加上释放代码。 对

1 、从iOS4之后Safari支持全屏浏览Siri支持普通话。 对

二、填空题每空2分共2分

1 、 iOS是使用Objective-C语言编写的使用该语言开发的Cocoa是一款功能强大的用户界面工具包也是iOS的核心。

2、数组是将元素在内存中连续存放由于每个元素占用内存相同可以通过下标迅速访问数组中任何元素。链表恰好相反其中的元素在内存中不是顺序存储的而是通过存在元素中的指针联系到一起。

3、发送同步请求程序将停止用户交互直至服务器返回数据完成才可以进行下一步操作。而发送异步请求不会阻塞主线程会建立一个新的线程来操作之后程序可以继续运行。

4、 autorelease只是把Object放入了当前的autorelease pool中当它被释放时其中的所有Object都会被调用Release。

5、作为Objective-C导入头文件的关键字#import用来包含系统的头文件#import””用来包含用户头文件。

三、简述题每题4分共2分

1 、 delegate和notification有什么区别什么情况下使用

答delegate消息的发送者 sender 告知接收者 receiver 某个事件将要发生delegate同意然后发送者响应事件 delegate机制使得接收者可以改变发送者的行为。

通常发送者和接收者的关系是直接的一对多的关系。notification消息的发送者告知接收者事件已经发生或者将要发生仅此而已接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。

2、 Object-C中创建线程的方法是什么如果在主线程中执行代码方法是什么如果想延时执行代码、方法又是什么

答线程创建有三种方法使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation 然后将其加入NSOperationQueue。

在主线程执行代码方法是performSelectorOnMainThread。

如果想延时执行代码可以用performSelector:onThread:withObject:waitUnti lDone。

3、 iOS有哪些数据持久化方式

答四种属性列表、对象归档、 SQLite3和Core Data。

4、 Objective-C如何对内存管理的,说说你的看法和解决方法

答Objective-C的内存管理主要有三种方式ARC自动内存计数 、手动内存计数、内存池。解决方法的话谁持有谁释放。

5、如何对iOS设备进行性能测试

答Profi le->Instruments->Time Profi ler。

四、 问答题每题1分共2分

1 、什么是MVC为什么使用MVC有什么好处描述一下iOS SDK中如何实现MVC的开发模式。

答MVC分别为模型(Model) 视图(View)和控制Control ler)。

模型Model 即“数据模型” 用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。 “模型”有对数据直接访问的权力例如对数据库的访问。

视图View视图层能够实现数据有目的显示。

控制器Control ler 控制器起到不同层面间的组织作用用于控制应用程序的流程。

对于iOS SDK所有的View都是视图层的它应该独立于模型层由视图控制层来控制。所有的用户数据都是模型层它应该独立于视图。所有的ViewControl ler都是控制层由它负责控制视图访问模型数据。

2、请阐述UIViewControl ler的生命周期包括代码的执行顺序。答当一个视图控制器被创建并在屏幕上显示的时候。代码的执行顺序

//视图显示在屏幕上的顺序

1 、 al loc创建对象分配空间。

2、 init (initWithNibName)初始化对象,初始化数据。

3、 viewload从nib载入视图,这一步不需要去干涉。除非没有使用xib文件创建视图。

4、 viewDidLoad加载完毕可以进行自定义数据以及动态创建其他控件。

5、 viewWi l lAppear视图将出现在屏幕之前马上这个视图即将显示在屏幕上。

6、 viewDidAppear视图已在屏幕上渲染完成。

//视图将被从屏幕上移除的顺序

1 、 viewWi l lDisappear视图将被从屏幕上移除之前执行。

2、 viewDidDisappear视图已经被从屏幕上移除。

3、 deal loc视图被销毁此时需要在init和viewDidLoad中创建的对象进行释放。

4、 viewDidUnload出现内存警告在内存不足时执行并对所有非当前显示的control ler执行。

本视图的所有子视图将被销毁以释放内存此时开发者需要手动对viewLoad、 viewDidLoad中创建的对象释放内存。

因为当这个视图再次显示在屏幕上的时候viewLoad、viewDidLoad再次被调用以便再次构造视图。

五、论述题2分

请针对正泰中自智慧水务APP的需求见现场展示的原型 论述您的开发思路和使

用的开发技术。

输入和输出

IO分类

1输入和输出流

2节点流和处理流

3字节流byte和字符流(char)

输入流

字节流

抽象基类InputStream

读取文件的Fi leInputStream

缓冲流BufferedInputStream

读取各种java基本数据类型的DataInputStream

读取对象ObjectInputStream

字符流

抽象基类Reader

读取文本文件的Fi leReader

实现缓冲的BufferedRead读取一个行readLine(); newl ine()输出流字节流

抽象基类OutputStream

写文件的Fi leOutputStream\\\\

缓冲输出流BufferedOutputStream

写各种java基本数据类型的DataOutputStream

写对象的ObjectOutputStreamwriteObject(Object obj) ;字符流

对象的序列化

一个对象所属的类如果实现java. io.Serial izable

则这个类是序列化类此类创建的对象就是序列化对象序列化对象可以通过文件流在文件中进行读和写。

数据存储★★

1 、 IOS中常用的数据存储方式有哪些

答数据存储有四种方案 NSUserDefault,KeyChain,Fi le,DB.其中Fi le有三种方式pl ist,Archiver,Stream DB包括core Data和FMDB

2、说一说你对sql ite的认识

SQLite是目前主流的嵌入式关系型数据库其最主要的特点就是轻量级、跨平台当前很多嵌入式操作系统都将其作为数据库首选。虽然SQLite是一款轻型数据库但是其功能也绝不亚于很多大型关系数据库。学习数据库就要学习其相关的定义、操作、查询语言也就是大家日常说得SQL语句。和其他数据库相比SQLite中的SQL语法并没有太大的差别因此这里对于SQL语句的内容不会过多赘述大家可以参考SQLite中其他SQL相关的内容这里还是重点讲解iOS中如何使用SQLite构建应用程序。先看一下SQLite数据库的几个特点

基于C语言开发的轻型数据库

在iOS中需要使用C语言语法进行数据库操作、访问无法使用ObjC直接访问因为l ibql ite3框架基于C语言编写

SQLite中采用的是动态数据类型即使创建时定义了一种类型在实际操作时也可以存储其他类型但是推荐建库时使用合适的类型特别是应用需要考虑跨平台的

情况时

建立连接后通常不需要关闭连接尽管可以手动关闭

在iOS中操作SQLite数据库可以分为以下几步注意先在项目中导入l ibsql ite3框架

打开数据库利用sql ite3_open()打开数据库会指定一个数据库文件保存路径如果文件存在则直接打开否则创建并打开。打开数据库会得到一个sql ite3类型的对象后面需要借助这个对象进行其他操作。

执行SQL语句执行SQL语句又包括有返回值的语句和无返回值语句。对于无返回值的语句如增加、删除、修改等直接通过sql ite3_exec()函数执行

对于有返回值的语句则首先通过sql ite3_prepare_v2()进行sql语句评估语法检测 然后通过sql ite3_step()依次取出查询结果的每一行数据对于每行数据都可以通过对应的sql ite3_column_类型()方法获得对应列的数据如此反复循环直到遍历完成。 当然最后需要释放句柄。

3、说一说你对FMDB的认识

FMDB是一个处理数据存储的第三方框架框架是对sql ite的封装整个框架非常轻量级但又不失灵活性而且更加面向对象。 FMDB有如下几个特性

FMDB既然是对于l ibsql ite3框架的封装 自然使用起来也是类似的使用前也要打开一个数据库这个数据库文件存在则直接打开否则会创建并打开。这里FMDB引入了一个MFDatabase对象来表示数据库打开数据库和后面的数据库操作全部依

赖此对象。

对于数据库的操作跟前面KCDbManager的封装是类似的在FMDB中FMDatabase类提供了两个方法executeUpdate:和executeQuery:分别用于执行无返回结果的查询和有返回结果的查询。当然这两个方法有很多的重载这里就不详细解释了。唯一需要指出的是如果调用有格式化参数的sql语句时格式化符号使用“”而不是“%@”、等。

我们知道直接使用l ibsql ite3进行数据库操作其实是线程不安全的如果遇到多个线程同时操作一个表的时候可能会发生意想不到的结果。为了解决这个问题建议在多线程中使用FMDatabaseQueue对象相比FMDatabase而言它是线程安全的。

将事务放到FMDB中去说并不是因为只有FMDB才支持事务而是因为FMDB将其封装成了几个方法来调用不用自己写对应的sql而已。其实在在使用l ibsql ite3操作数据库时也是原生支持事务的因为这里的事务是基于数据库的 FMDB还是使用的SQLite数据库 只要在执行sql语句前加上“begin transaction;”执行完之后执行“commit transaction;”或者“rol lback transaction;”进行提交或回滚即可。另外在Core Data中大家也可以发现所有的增、删、改操作之后必须调用上下文的保存方法其实本身就提供了事务的支持只要不调用保存方法之前所有的操作是不会提交的。 在FMDB中FMDatabase有beginTransaction、 commit、 rol lback三个方法进行开启事务、提交事务和回滚事务。

4、说一说你对Core Data的认识

Core Data使用起来相对直接使用SQLite3的API而言更加的面向对象操作过

程通常分为以下几个步骤

创建管理上下文

创建管理上下可以细分为加载模型文件->指定数据存储路径->创建对应数据类型的存储->创建管理对象上下方并指定存储。

经过这几个步骤之后可以得到管理对象上下文NSManagedObjectContext 以后所有的数据操作都由此对象负责。同时如果是第一次创建上下文Core Data会自动创建存储文件例如这里使用SQLite3存储 并且根据模型对象创建对应的表结构。

查询数据

对于有条件的查询在Core Data中是通过谓词来实现的。首先创建一个请求然后设置请求条件最后调用上下文执行请求的方法。

插入数据

插入数据需要调用实体描述对象NSEntityDescription返回一个实体对象然后设置对象属性最后保存当前上下文即可。这里需要注意增、删、改操作完最后必须调用管理对象上下文的保存方法否则操作不会执行。

删除数据

删除数据可以直接调用管理对象上下文的deleteObject方法删除完保存上下文即可。注意删除数据前必须先查询到对应对象。

修改数据

修改数据首先也是取出对应的实体对象然后通过修改对象的属性最后保存上下文。

5、 OC中有哪些数据存储方式,各有什么区别 OC中有四种数据存储方式:

1).NSUserDefaults,用于存储配置信息2).SQLite,用于存储查询需求较多的数据

3).CoreData,用于规划应用中的对象

4).使用基本对象类型定制的个性化缓存方案.NSUserDefaults:对象中储存了系统中用户的配置信息,开发者可以通过这个实例对象对这些已有的信息进行修改,也可以按照自己的需求创建新的配置项。SQLite擅长处理的数据类型其实与NSUserDefaults差不多,也是基础类型的小数据,只是从组织形式上不同。开发者可以以关系型数据库的方式组织数据,使用SQLDML来管理数据。一般来说应用中的格式化的文本类数据可以存放在数据库中,尤其是类似聊天记录、 Timel ine等这些具有条件查询和排序需求的数据。

CoreData是一个管理方案,它的持久化可以通过SQLite、XML或二进制文件储存。它可以把整个应用中的对象建模并进行自动化的管理。从归档文件还原模型时CoreData并不是一次性把整个模型中的所有数据都载入内存,而是根据运行时状态,把被调用到的对象实例载入内存。框架会自动控制这个过程,从而达到控制内存消耗,避免浪费。无论从设计原理还是使用方法上看,CoreData都比较复杂。 因此,如果仅仅是考虑缓存数据这个需求,CoreData绝对

不是一个优选方案。 CoreData的使用场景在于:整个应用使用CoreData规划,把应用内的数据通过CoreData建模,完全基于CoreData架构应用。使用基本对象类型定制的个性化缓存方案:从需求出发分析缓存数据有哪些要求:按Key查找,快速读取,写入不影响正常操作,不浪费内存,支持归档。这些都是基本需求,那么再进一步或许还需要固定缓存项数量,支持队列缓存,缓存过期等。

数据存储这一块,面试常问,你常用哪一种数据存储什么是序列化sql ite是直接用它还是用封装了它的第三方库尤其是会问sql ite和core data的区别

5、 IOS平台怎么做数据的持久化coredata和sql ite有无必然联系coredata是一个关系型数据库吗iOS中可以有四种持久化数据的方式:属性列表、对象归档、 SQLite3和Core Datacoredata可以使你以图形界面的方式快速的定义app的数据模型,同时在你的代码中容易获取到它。 coredata提供了基础结构去处理常用的功能,例如保存,恢复,撤销和重做,允许你在app中继续创建新的任务。在使用coredata的时候,你不用安装额外的数据库系统,因为coredata使用内置的sql ite数据库。 coredata将你app的模型层放入到一组定义在内存中的数据对象。 coredata会追踪这些对象的改变,同时可以根据需要做相应的改变,例如用户执行撤销命令。当coredata在对你app数据的改变进行保存的时候,core data会把这些数据归档,并永久性保存。mac os x中sql ite库,它是一个轻量级功能强大的关系数据引擎,也很容易嵌入到应用程序。可以在多个平台使用,sql ite是一个轻量级的嵌入式sql数据库编程。与coredata框架不同的是,sql ite是使用程序式的,sql的主要的API来直接操作数据表。Core Data不是一个关系型数据库,也不是关系型数据库管理系统(RDBMS)。虽然Core Dta支持SQLite作为一种存储类型,但它不能使用任意的SQLite数据库。 Core Data在使用的过程种自己创建这个数据库。 Core Data支持对

一、对多的关系。

6、如果后期需要增加数据库中的字段怎么实现如果不使用CoreData呢

编写SQL语句来操作原来表中的字段增加表字段

ALTERTABLE表名ADD COLUMN字段名字段类型; 删除表字段

ALTERTABLE表名DROP COLUMN字段名;

.

修改表字段

ALTER TABLE表名RENAME COLUMN旧字段名TO新字段名;

7、 SQLite数据存储是怎么用

添加SQLite动态库

导入主头文件#import利用C语言函数创建\\\\打开数据库编写SQL语句

8、简单描述下客户端的缓存机制

1>缓存可以分为内存数据缓存、数据库缓存、文件缓存2>每次想获取数据的时候3>先检测内存中有无缓存

4>再检测本地有无缓存(数据库\\\\文件)5>最终发送网络请求

6>将服务器返回的网络数据进行缓存内存、数据库、文件 以便下次读取

9 、 你 实 现 过 多 线 程 的 Core Data 么 NSPersistentStoreCoordinator  NSManagedObjectContext和NSManagedObject中的哪些需要在线程中创建或者传递你是用什么样的策略来实现的

1>CoreData是对SQLite数据库的封装

2>CoreData中的NSManagedObjectContext在多线程中不安全

3>如果想要多线程访问CoreData的话最好的方法是一个线程一个NSManagedObjectContext 4>每个NSManagedObjectContext对象实例都可以使用同一个NSPersistentStoreCoordinator实例这是因为NSManagedObjectContext会在便用NSPersistentStoreCoordinator前上锁

1 、 core data数据迁移

博客地址:

1 1 、 FMDB的使用和对多张表的处理

博客地址:

12、说说数据库的左连接和右连接的区别

数据库左连接和右连接的区别主表不一样通过左连接和右连接最小条数为3记录条数较小的记录数 最大条数为123×4技术博客的地址:

、程序启动画面大小iOS设备现在有三种不同的分辨率iPhone 32x48、 iPhone 464x96、 iPad 768x124。以前程序的启动画面(图片)只要准备一个Default.png就可以了但是现在变得复杂多了。下面就是CocoaChina会员做得总结

昔日数据月付12元起,湖北十堰机房10M带宽月付19元起

昔日数据怎么样?昔日数据是一个来自国内服务器销售商,成立于2020年底,主要销售国内海外云服务器,目前有国内湖北十堰云服务器和香港hkbn云服务器 采用KVM虚拟化技术构架,湖北十堰机房10M带宽月付19元起;香港HKBN,月付12元起; 此次夏日活动全部首月5折促销,有需要的可以关注一下。点击进入:昔日数据官方网站地址昔日数据优惠码:优惠码: XR2021 全场通用(活动持续半个月 2021/7...

spinservers($89/月),圣何塞10Gbps带宽服务器,达拉斯10Gbps服务器

spinservers是Majestic Hosting Solutions LLC旗下站点,主要提供国外服务器租用和Hybrid Dedicated等产品的商家,数据中心包括美国达拉斯和圣何塞机房,机器一般10Gbps端口带宽,高配置硬件,支持使用PayPal、信用卡、支付宝或者微信等付款方式。目前,商家针对部分服务器提供优惠码,优惠后达拉斯机房服务器最低每月89美元起,圣何塞机房服务器最低每月...

3C云1核1G 9.9元 4核4G 16元 美国Cera 2核4G 24元

3C云互联怎么样?3C云互联专注免备案香港美国日本韩国台湾云主机vps服务器,美国高防CN2GIA,香港CN2GIA,顶级线路优化,高端品质售后无忧!致力于对互联网云计算科技深入研发与运营的极客共同搭建而成,将云计算与网络核心技术转化为最稳定,安全,高速以及极具性价比的云服务器等产品提供给用户!专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松...

ios 5 0为你推荐
外网和内网内网和外网有什么区别啊?在线漏洞检测如果检测网站是否有漏洞?bluestacks安卓模拟器BlueStacks如何安装使用?正则表达式javajava正则表达式办公协同软件最好用的协同办公软件是哪个创维云电视功能创维健康云电视有什么功能?商标注册查询官网商标注册网的官网是哪个?分词技术百度的中文分词原理是什么?与IK分词有区别吗?网站优化方案网站建设及优化的方案如何清理ie缓存怎么清除IE缓存
未注册域名查询 域名服务器上存放着internet主机的 万网域名管理 什么是域名地址 edis bash漏洞 sockscap 512m内存 网站实时监控 地址大全 panel1 亚洲小于500m qq数据库下载 中国电信测速112 1g内存 php空间购买 四核服务器 东莞idc smtp服务器地址 免费主页空间 更多