2018-04-09面试题

1、property常用的修饰符,常用的属性

atomic/nonatomic、readwrite/ readonly、assign、strong、weak、copy、unsafe_unretained、retain

2、用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?

用@property声明 NSString、NSArray、NSDictionary 经常使用copy关键字,是因为他们有对应的可变类型:NSMutableString、NSMutableArray、NSMutableDictionary,他们之间可能进行赋值操作,为确保对象中的字符串值不会无意间变动,应该在设置新属性值时拷贝一份。如果我们使用是strong,那么这个属性就有可能指向一个可变对象,如果这个可变对象在外部被修改了,那么会影响该属性。

copy此特质所表达的所属关系与strong类似。然而设置方法并不保留新值,而是将其“拷贝” (copy)。 当属性类型为NSString时,经常用此特质来保护其封装性,因为传递给设置方法的新值有可能指向一个NSMutableString类的实例。这个类是NSString的子类,表示一种可修改其值的字符串,此时若是不拷贝字符串,那么设置完属性之后,字符串的值就可能会在对象不知情的情况下遭人更改。所以,这时就要拷贝一份“不可变” (immutable)的字符串,确保对象中的字符串值不会无意间变动。只要实现属性所用的对象是“可变的” (mutable),就应该在设置新属性值时拷贝一份。

3、#import跟#include有什么区别,@class呢?

C/C++中包含头文件时用#include。( 使用include要注意重复引用的问题:解决办法#ifndef/#define/#endif)

#import 确定一个文件只能被导入一次,避免了重复引的问题,在OC中我们基本用的都是 import。 #import< > 包含iOS框架类库的类, #import""包含项目中自定义的类。@class通知编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑

4、IOS中持久化方式有哪些?

NSUserDefaults、plist、Archiving:归档、SQLite3和Core Data

5、通知和代理的区别?

观察者模式:一个对象(A)想知道另一个对象(B)的状态是否发生了变化,A对象随B对象状态的改变而改变的过程,可以用观察的过程来控制,这种两个对象保持状态改变的一致的模式,叫做观察者模式

------共同点    利用通知和代理都能完成对象间的通信。(比如A对象告诉D对象发生了什么事情,A对象传递数据给D对象)

------不同点      代理:只能是一对一的关系(一个对象只能告诉另外一个对象发生了什么事情)通知:多对多关系(一个对象能告诉N个对象发生了什么事情,一个对象能得知N个对象发生了什么事情)

6、什么是KVC和KVO

 转载https://www.cnblogs.com/huadeng/p/7064382.html

7、Objective-C有多重继承吗?不是的话有什么代替方法?

没有多重继承( )多继承在这里是用protocol 委托代理 来实现的

8、简述线程与进程的区别和联系?

进程和线程都是操作系统中程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。差别在与不同的操作系统资源管理方式。

进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程知识一个进程中的不同执行路径。

线程有自己的堆栈和局部变量,但线程之间没有独立的地址空间,一个线程死掉就等于整个线程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

9、冒泡排序

NSMutableArray *array = [NSMutableArray arrayWithObjects:@12,@15,@10,@80,@8, nil]; 

 for (int i=0; i b){

          //    int temp = a;           

            // a=b

           // b=temp

                [array exchangeObjectAtIndex:j withObjectAtIndex:j+1];

            }

        }

    }

10、下面的代码有什么错误

-(void)setName:(NSString *)name{

    self.name=name;

}

会造成死循环,self.name本身会调用setter和getter方法,改进:_name=name

11、如何修改并且访问一个私有属性

有两种方法,一种是通过KVC,一种是通过runtime

12、extension和category

extension只有.h文件,可以添加实例变量(成员变量),extension里声明的方法需要在mainimplementation中实现

category有.h和.m文件,不可以添加实例变量(成员变量){},但是属性可以添加(@property声明的),方法:定一个全局变量

@property(nonatomic,copy)NSString *testStr;

NSString *_testStr;

-(void)setTestStr:(NSString *)testStr{

    _testStr = testStr;

}

-(NSString *)testStr{

    return _testStr;

}

13、iOS 的沙盒目录结构是怎样的? App Bundle 里面都有什么?

.沙盒结构

.Application:存放程序源文件,上架前经过数字签名,上架后不可修改

.Documents:常用目录,iCloud备份目录,存放数据,这里不能存缓存文件,否则上架不被通过

.Library:

        Caches:存放体积大又不需要备份的数据,SDWebImage缓存路径就是这个

        Preference:设置目录,iCloud会备份设置信息

.tmp:存放临时文件,不会被备份,而且这个文件下的数据有可能随时被清除的可能

App Bundle 里面有

Info.plist:此文件包含了应用程序的配置信息.系统依赖此文件以获取应用程序的相关信息

可执行文件:此文件包含应用程序的入口和通过静态连接到应用程序target的代码

资源文件:图片,声音文件一类的

其他:可以嵌入定制的数据资源

14、有哪些常见的crash场景

访问了僵尸对象、访问了不存在的方法、数组越界、在定时器下一次回调前将定时器释放,会Crash

15、CocoaPods原理

1.Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可

2.对于资源文件,CocoaPods提供了一个名为Pods-resources.sh的bash脚本,该脚本在每次项目编译的时候都会执行,将第三方的各种资源文件复制到目标目录中

3.CocoaPods通过一个名为Pods.xcconfig的文件在编译时设置所有的依赖和参数



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    卑微的戏子阅读 622评论 0 1
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,134评论 30 470
  • “基于数据决策:决策,就是与这个世界的博弈” 数据决策就是根据数据的分析做出最合理的决策,就像我们店面定...
    孙倩阅读 703评论 0 0
  • 20171012,第七周周四。 国庆节期间,老公向我抱怨了孩子几句,我有些受不了。我喜欢听老公说...
    记得祝福阅读 214评论 7 7
  • 好冷
    李多多520阅读 153评论 0 0