美文网首页
开发问题笔记(十二)

开发问题笔记(十二)

作者: Kevin_wzx | 来源:发表于2020-06-20 17:43 被阅读0次

    目录

    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.好用第三方推荐

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

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

    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 周期结束后进行内存释放,在收到内存警告时也会就行内存释放。
    https://www.jianshu.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
    https://www.jianshu.com/p/55eb97ed5b83

    27.好用第三方推荐

    • IGListKit 框架

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

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

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

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

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

    https://www.jianshu.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];
     } 
    

    相关文章

      网友评论

          本文标题:开发问题笔记(十二)

          本文链接:https://www.haomeiwen.com/subject/mndgxktx.html