对象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会员做得总结

提速啦 韩国服务器 E3 16G 3IP 450元/月 韩国站群服务器 E3 16G 253IP 1100元/月

提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...

Dynadot多种后缀优惠域名优惠码 ,.COM域名注册$6.99

Dynadot 是一家非常靠谱的域名注册商家,老唐也从来不会掩饰对其的喜爱,目前我个人大部分域名都在 Dynadot,还有一小部分在 NameCheap 和腾讯云。本文分享一下 Dynadot 最新域名优惠码,包括 .COM,.NET 等主流后缀的优惠码,以及一些新顶级后缀的优惠。对于域名优惠,NameCheap 的新后缀促销比较多,而 Dynadot 则是对于主流后缀的促销比较多,所以可以各取所...

Virmach$7.2/年,新款月抛vps上线,$3.23/半年,/1核640M内存/10 GB存储/ 1Gbps/1T流量

Virmach自上次推出了短租30天的VPS后,也就是月抛型vps,到期不能续费,直接终止服务。此次又推出为期6个月的月抛VPS,可选圣何塞和水牛城机房,适合短期有需求的用户,有兴趣的可以关注一下。VirMach是一家创办于2014年的美国商家,支持支付宝、PayPal等方式,是一家主营廉价便宜VPS服务器的品牌,隶属于Virtual Machine Solutions LLC旗下!在廉价便宜美国...

ios 5 0为你推荐
行业关键词为什么有些行业关键词竟价出价很低有些行业很高中国论坛大全安徽论坛都有哪些?彩信中心移动的彩信中心是?主页是?收不到彩信,怎么设置?xp系统停止服务XP停止服务后该怎么办?奇虎论坛奇虎问答是什么bt封杀现在是全面封杀BT下载了吗?现在都找不到BT下载影片了机械键盘轴机械键盘的轴哪种好?网管工具网吧管理软件都有哪些?主板温度多少正常电脑主板温度多少正常office2007简体中文版到目前为止OFFICE都有哪些版本(简体中文版)?
域名系统 新通用顶级域名 cybermonday justhost l5520 iisphpmysql windows2003iso 免费全能空间 湖南服务器托管 40g硬盘 双11秒杀 国外代理服务器地址 国外代理服务器软件 vip域名 申请网页 华为云服务登录 网通服务器 网购分享 阿里云官方网站 中国电信网络测速 更多