ios若干问题总结

1.简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么?readwrite,readonly,assign,retain,copy,nonatomic 、atomic、strong、weak属性的作用

引用计数机制进行内存管理。 
dealloc  release 因为retain就要销毁  创建就要释放 
readwtite : 可读写(设置器和访问器)   readonly : 只读(访问器)     assign : 只做赋值  
retain对应的是release,内存的释放用release.
alloc对应的是dealloc,内存的销毁用dealloc
 readwrite此标记说明属性会被当成读写的,这也是默认属性
readonly此标记说明属性只可以读,也就是不能设置,可以获取。
 assign不会使引用计数加1,也就是直接赋值。
 retain会使引用计数加1。
 copy建立一个索引计数为1的对象,在赋值时使用传入值的一份拷贝。
nonatomic:非原子性访问,多线程并发访问会提高性能。
atomic:原子性访问。
strong:打开ARC时才会使用,相当于retain
weak:打开ARC时才会使用,相当于assign,可以把对应的指针变量置为nil



2.类变量中的@protected ,@private,@public,@package,声明各有什么含义?

@protected : 受保护的,自己和子类可以调用 
@private : 私有的, 只有自己可以调用 

@public : 公共的, 全局都可以调用 

@package : 本包内使用,跨包不可以

3.线程是什么?进程是什么?二者有什么区别和联系

线程,有时称为轻量级进程,是被系统独立调度和CPU的基本运行单位。        

 进程是操作系统中可以并行工作的基本单位。 
 一个应用程序里至少有一个进程,一个进程里至少有一个线程

4.谈谈你对多线程开发的理解?ios中有几种实现多线程的方法?

在一个进程中有多个线程,每个线程有自己单独的任务 
  优点: 效率快   缺点: 不安全,耗费资源       

有三种:

  第一种,使用@synchronized(self) 
  第二种,使用GCD 
  第三种,使用NSOperationQueue

5.多线程同步和异步的区别?IOS中如何实现多线程的同步?

一个进程启动的多个不相干线程,它们相互之间关系为异步。 
同步的话指的是多线程同时操作一个数据. 这个时候需要对数据添加保护, 这个保护就是线程的同步。 
     用GCD中的串行队列来解释多线程的同步,也就是队列中的任务
为串行,它们各自对相邻的任务有依赖性,如果任务1不完成,那么任务2就不会开始,这就是同步

6.假设有一个字符串aabcad,请写一段程序,去掉字符串中不相邻的重复字符串,即上述字符串处理之后的输出结果为:aabcd

char s[7] = "aabcad";

    for (int i = 0; i < 7; i++) {

        for (int j = i+1; j < 7; j++) {

            if ((s[i] == s[j]) && (j != i + 1)) {

                s[j] = s[j + 1];

            }

        }

    }

    for (int i = 0; i < 5; i++) {

        printf("%c", s[i]);

    }

7.获取一台设备唯一标识的方法有哪些

UIID      

UUID        

MAC ADDRESS       

OPEN UDID 

广告标示符   

Vindor标示符 

8.iOS本地数据存储都有哪几种方式

NSKeyedArchiver(加密形式)           

NSUserDefaults       

Write写入方式

SQLite3

9.深拷贝和浅拷贝的理解

对一个实例进行深拷贝时当前类需要实现NSCopying协议。 
浅拷贝是复制出来一个跟原对象是同一地址的对象,而深拷贝则是复制出 来一个跟源对象不同地址的对象,改变原对象,对新对象没有影响

10.对UIView、UIWindow和CALayer的理解   

UIView是用来显示内容的,可以处理用户事件.  

CALayer是用来绘制内容的,对内容进行动画处理依赖与UIView来进行显示,不能处理用户事件。

UIView和CALayer是相互依赖的关系。UIView依赖与calayer提供的内容,CALayer依赖uivew提供的容器来显示绘制的内容。归根到底CALayer是这一切的基础,如果没有CALayer,UIView自身也不会存在,UIView是一个特殊的CALayer实现,添加了响应事件的能力。总之,UIView来自CALayer,高于CALayer,是CALayer高层实现与封装。UIView的所有特性来源于CALayer支持. 

11.简述应用程序按Home键进入后台时的生命周期,以及从后台回到前台时的生命周期

<span style="word-wrap: normal; word-break: normal; line-height: 27px;"><span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei;"><span style="font-family: arial, 'courier new', courier, 宋体, monospace; line-height: 27px; white-space: pre-wrap; background-color: rgb(240, 240, 240);">进入后台时:</span>
</span></span>
<span style="word-wrap: normal; word-break: normal; line-height: 27px;"><span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei;">- (</span>void<span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei;">)applicationWillResignAct<wbr>ive:(</wbr></span>UIApplication<span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei;"> *)application</span></span>
<span style="font-family: arial, 'courier new', courier, 宋体, monospace; word-wrap: normal; word-break: normal; line-height: 27px;"><span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei; white-space: normal;">- (</span><span style="word-wrap: normal; word-break: normal; white-space: normal;">void</span><span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei; white-space: normal;">)applicationDidEnterBackg<wbr>round:(</wbr></span><span style="word-wrap: normal; word-break: normal; white-space: normal;">UIApplication</span><span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei; white-space: normal;"> *)application</span></span>
回到前台

<span style="word-wrap: normal; word-break: normal; line-height: 27px;"><span style="font-size:12px;"><span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei;">- (</span>void<span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei;">)applicationWillEnterForeground:(</span>UIApplication<span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei;"> *)application</span></span></span>
<span style="word-wrap: normal; word-break: normal; line-height: 27px;"><span style="font-size:12px;"><span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei;">- (</span>void<span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei;">)applicationDidBecomeActive:(</span>UIApplication<span style="word-wrap: normal; word-break: normal; line-height: normal; font-family: simHei;"> *)application</span></span></span>
12.ViewController 的 alloc,loadView,ViewDidLoad,ViewWillAppear,ViewDidUnload,dealloc,init分别是在什么时候调用的?在自定义ViewController的时候这几个函数里面应该做什么工作

<span style="word-wrap: normal; word-break: normal; line-height: 30px;"><span style="word-wrap: normal; word-break: normal; line-height: 27px;"><span style="font-size:12px;">alloc申请内存时调用      </span></span></span><span style="line-height: 27px; background-color: rgb(240, 240, 240);"><span style="font-size:12px;">loadView加载视图时调用        </span></span><span style="line-height: 27px; background-color: rgb(240, 240, 240);"><span style="font-size:12px;">ViewDidLoad视图已经加载后调用       </span></span><span style="font-size:12px; line-height: 27px; background-color: rgb(240, 240, 240);">ViewWillAppear视图将要出现时调用    </span><span style="line-height: 27px; background-color: rgb(240, 240, 240);"> </span><span style="font-size:12px; line-height: 27px; background-color: rgb(240, 240, 240);">ViewDidUnload视图已经加载</span><span style="line-height: 27px; background-color: rgb(240, 240, 240);"><span style="font-size:12px;">但没有加载出来调用     </span></span><span style="font-size:12px; line-height: 27px; background-color: rgb(240, 240, 240);">dealloc销毁该视图时调用    </span><span style="font-size:12px; line-height: 27px; background-color: rgb(240, 240, 240);">init视图初始化时候调用</span>
<span style="line-height: 24px; text-indent: 28px;"><span style="font-size:18px;">13.面向对象的三大特征,并作简单的介绍。</span></span>
<span style="line-height: 24px; text-indent: 28px;"><span style="font-size:12px;">答:封装、继承、多态</span></span>
<span style="line-height: 24px; text-indent: 28px;"><span style="font-size:12px;">封装:将一个实例的所有属性封装到某个类中</span></span>
<span style="line-height: 24px; text-indent: 28px;"><span style="font-size:12px;">继承:子类继承父类所有方法和属性</span></span>
<span style="line-height: 24px; text-indent: 28px;"><span style="font-size:12px;">多态:父类指针指向子类对象</span></span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的精简博客系统,源码+数据库+毕业论文+视频演示 当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈进。以前企业对于博客信息的管理和控制,采用人工登记的方式保存相关数据,这种以人力为主的管理模式已然落后。本人结合使用主流的程序开发技术,设计了一款基于Springboot开发的精简博客系统,可以较大地减少人力、财力的损耗,方便相关人员及时更新和保存信息。本系统主要使用B/S开发模式,在idea开发平台上,运用Java语言设计相关的系统功能模块,MySQL数据库管理相关的系统数据信息,SpringBoot框架设计和开发系统功能架构,最后通过使用Tomcat服务器,在浏览器中发布设计的系统,并且完成系统与数据库的交互工作。本文对系统的需求分析、可行性分析、技术支持、功能设计、数据库设计、功能测试等内容做了较为详细的介绍,并且在本文中也展示了系统主要的功能模块设计界面和操作界面,并对其做出了必要的解释说明,方便用户对系统进行操作和使用,以及后期的相关人员对系统进行更新和维护。本系统的实现可以极大地提高企业的工作效率,提升用户的使用体验,因此在现实生活中运用本系统具有很大的使用价值。 关键词:博客管理;Java语言;B/S结构;MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值