iOS 面试题 - 基础知识点2

目录

1.如果NSMutableArray用copy修饰可以不可以?
2.KVC 与 KVO 使用理解
3.委托和代理一样吗?
4.野指针与空指针?
5.抽象工厂模式在 Cocoa SDK 中哪些类中体现?
6.友盟统计埋点
7.基础属性修饰
8.frame和bounds的区别,frame的宽⾼高在什么情况下和bound的宽⾼高不⼀一样?
9.ARC和MRC的内存管理⽅方式本质上区别?为什么?
10.layoutSubviews在哪些情况下会被调用?
11.NSThread中的Runloop的作用,如何使用?
12.简述类⽬目优点和缺点,如果覆盖本类或者⽗父类的⽅方法,会出现什么问题?
13.为什么要⽤用-all_load&-ObjC?
14.runtime如何通过selector找到对应的IMP地址?(分别考虑类⽅方法和实例⽅方法)
15.一个Objective-C对象如何进⾏行内存布局?
16.当前视图有5页数据,浏览到第三页,点击详情跳转过去,回来怎么继续停留在第三页,若请求数据?
17.@synthesize和@dynamic分别有什么作用?
18.用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
19.objc 使用什么机制管理对象内存?
20.不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中)
21.表情包素材链接
22.iOS学习之 plist文件的读写
23.用masonry动态布局的时候,如果在一个数组里面创建多个按钮,一排最多3个按钮,怎么布局,在多少个未定的情况下?(使用到Masonry哪个属性)
24.bug之打包奔溃
25.ViewController的生命周期
26.Xcode 新建文件时频繁崩溃
27.好用第三方推荐
28.不用写pch文件,直接h文件效果等同pch
29.如何将自己的库上传到CocoaPods
30.跳转淘宝商品详情与淘宝店铺(App+网页)

1.如果NSMutableArray用copy修饰可以不可以?

当 copy 修饰可变类型集合(例如:NSMutableArray)时,赋值后,会导致可变类型属性变为不可变类型,然后在调用可变类型方法时,会产生异常错误。产生异常的原因是 copy 属性在运行时赋值时调用了 -copyWithZone:赋值,将可变类型转换为不可变类型。

补充说明:
比如这个写法:@property (nonatomic, copy) NSMutableArray *array; 如果使用这个 array 会闪退,因为 copy 出来的是一个不可变的数组。比如调用的时候是添加元素,那么错误会是数组找不到添加元素的方法,所以会闪退。

相关链接://www.greatytc.com/p/a3ed2ee9f006

chatgpt 分析问题

2.KVC 与 KVO 使用理解

  • 1.KVC

KVC的keyPath可以是属性、实例变量、成员变量


KVC的底层实现
  • 2.KVO的底层原理是什么?

KVO的keyPath可以是属性、实例变量、成员变量。KVO的底层基于 runtime 机制实现

3.委托和代理一样吗?

4.野指针与空指针?

5.抽象工厂模式在 Cocoa SDK 中哪些类中体现?

6.友盟统计埋点

7.基础属性修饰

自己的笔记.png

8.frame和bounds的区别,frame的宽⾼高在什么情况下和bound的宽⾼高不⼀一样?

frame:当前界面元素在其父界面元素中的位置和大 小
bounds:当前界面元素在其自身坐标系统中的位置和 大小

9.ARC和MRC的内存管理⽅方式本质上区别?为什么?

10.layoutSubviews在哪些情况下会被调用?

11.NSThread中的Runloop的作用,如何使用?

12.简述类⽬目优点和缺点,如果覆盖本类或者⽗父类的⽅方法,会出现什么问题?

1.类目优点不需要通过增加子类而增加现有类的行为 (方法),且类目中的方法与原始类方法基本没有区别;
2.通过类目可以将庞大一个类的方法进行划分,从而便 于代码的日后的维护、更新以及提高代码的阅读性;
3.缺点无法向类目添加实例变量,如果需要添加实例变 量,只能通过定义子类的方式;如果覆盖父类的方法,可 能导致 super 消息的断裂。因此,最好不要覆盖原始类 中的方法。

13.为什么要⽤用-all_load&-ObjC?

14.runtime如何通过selector找到对应的IMP地址?(分别考虑类⽅方法和实例⽅方法)

15.一个Objective-C对象如何进⾏行内存布局?

16.当前视图有5页数据,浏览到第三页,点击详情跳转过去,回来怎么继续停留在第三页,若请求数据?

你只要不在viewWillAppear里面刷新视图和请求数据。那你返回上一个页面是不会刷新的呀

17.@synthesize和@dynamic分别有什么作用?

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

https://blog.csdn.net/weixin_33725515/article/details/88027657

19.objc 使用什么机制管理对象内存?

用的是引用计数的机制。通过 retainCount 的机制来决定对象是否需要释放。每次 run loop 的时候,都会检查对象的 retainCount,如果 retainCount 为 0,说明该对象没有地方需要继续使用了,可以释放掉了。

iOS内存管理.PNG

20.不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中)

不手动指定 autoreleasepool 的前提下 ,autorealese 在一个 runloop 周期结束后进行内存释放,在收到内存警告时也会就行内存释放。
//www.greatytc.com/p/e69e303ba1b4

  • 补充:对象是什么时候被release的?

引用计数为0时被release。autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease,系统只是把该Object放入了当前的 Autorelease pool中,当该pool被释放时,该pool中的所有Object会被调用Release。对于每一个Runloop, 系统会隐式创建一个Autorelease pool,这样所有的release pool会构成一个象CallStack一样的一个栈式结构,在每一个Runloop结束时,当前栈顶的Autorelease pool会被销毁,这样这个pool里的每个Object(就是autorelease的对象)会被release。那什么是一个Runloop呢? 一个UI事件,Timer call, delegate call, 都会是一个新的Runloop

21.表情包素材链接

https://www.easyicon.net/iconsearch/%E8%A1%A8%E6%83%85%E5%8C%85%E3%80%81/3/?m=yes&f=_all&s=
http://aspx.sc.chinaz.com/query.aspx?keyword=%E5%9B%BE%E6%A0%87&issale=&classID=49&page=161

22.iOS学习之 plist文件的读写

https://blog.csdn.net/totogo2010/article/details/7634185

23.用masonry动态布局的时候,如果在一个数组里面创建多个按钮,一排最多3个按钮,怎么布局,在多少个未定的情况下?(使用到Masonry哪个属性)

http://www.cocoachina.com/articles/22551

24.bug之打包奔溃

场景:一开始系统选择13.5的进行pod操作,在选择9.0进行上传打包的时候报错。解决方法就是再重新选择9.0pod一遍,即可在9.0的时候进行上传打包

25.ViewController的生命周期

ViewController的生命周期

26.Xcode 新建文件时频繁崩溃

https://blog.csdn.net/qq_30513483/article/details/52098628
//www.greatytc.com/p/55eb97ed5b83

27.好用第三方推荐

  • IGListKit 框架

Instagram在2016年年底发布了基于数据驱动的UICollectionView框架IGListKit。使用数据驱动去创造更为快速灵活的列表控件。以下是该框架的特点:
1.数据驱动(数据改变 -> Diff算法 -> update界面)
2.可重复单元和组件的更好体系结构
3.解耦的差异算法
4.可以为数据模型自定义差异算法
5.可扩展的API

//www.greatytc.com/p/3517619085f7
用此实现朋友圈://www.greatytc.com/p/d52fe7059d92

  • 内存泄漏检测:pod 'FBRetainCycleDetector', :configurations => ['Debug']
  • 内存溢出:pod 'MLeaksFinder'
  • 个人常用iOS第三方库以及XCode插件介绍:http://www.cocoachina.com/articles/12503

28.不用写pch文件,直接h文件效果等同pch

29.如何将自己的库上传到CocoaPods

//www.greatytc.com/p/3a8f7a1569bc

30.跳转淘宝商品详情与淘宝店铺(App+网页)

场景:有的需求会是一个H5链接,在H5链接里面有按钮可以交互跳转淘宝商品详情和淘宝店铺,根据详情id和店铺shop_id来跳转。在用户是否安装了淘宝App的判断上分为跳转淘宝App与跳转网页淘宝,商品详情和店铺的id可以打开淘宝分别获取他们的地址,在地址里面便可以看到对应的id的值,进而拿来测试,举例如下图。
相关链接:
https://blog.csdn.net/u014798232/article/details/79734354
http://www.vephp.com/jiaocheng/14660.html

知本家后台配置H5营销活动
App的H5页面
跳转后-网页淘宝详情
跳转后-网页淘宝App
1.// 淘宝商品详情页
NSURL *taobaoUrl = [NSURL URLWithString:[NSString stringWithFormat:@"taobao://item.taobao.com/item.htm?id=%@", detailId]];//id=61377079480
NSString *strWebUrl = [NSString stringWithFormat:@"https://item.taobao.com/item.htm?id=%@",detailId];
NSURL *webUrl = kUrl(strWebUrl);
        
 if ([[UIApplication sharedApplication] canOpenURL:taobaoUrl]) {// 能打开淘宝就打开淘宝
                 
       [[UIApplication sharedApplication] openURL:taobaoUrl];
  } else {// 浏览器中打开
                 
       [[UIApplication sharedApplication] openURL:webUrl];
  }

2.// 淘宝店铺
NSURL *taobaoUrl = [NSURL URLWithString:[NSString  stringWithFormat:@"taobao://shop.m.taobao.com/shop/shop_index.htm?shop_id=%@",detailId]];//shopId=59369908
NSString *strWebUrl = [NSString stringWithFormat:@"https://shop.m.taobao.com/shop/shop_index.htm?shop_id=%@",detailId];
NSURL *webUrl = kUrl(strWebUrl);
            
 if ([[UIApplication sharedApplication] canOpenURL:taobaoUrl]) {
                 
        [[UIApplication sharedApplication] openURL:taobaoUrl];
 } else {
                 
         [[UIApplication sharedApplication] openURL:webUrl];
 } 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容