基础问题

作者: 爱哭的僵小鱼 | 来源:发表于2018-04-10 09:46 被阅读0次

    最近再做一些项目,就把项目中的一些问题收集一些

    1 .Protocol

        protocol翻译过来叫做“协议”,    protocol是用来生命一些必须实现的方法和选择实现的方法,

       protocol的语法格式:

       @protocol 协议名称-                                                    示例```

       // 方法声明列表                                                          @protocol ******

        @end                                                                                - (void)*******;

                                                                                                    - (void)********;

                                                                                                      @end

    2. UICollectionViewLayout

    可以看这个博客的 写的挺全的 iOS: 玩转UICollectionViewLayout - CSDN博客

    3.  respondstoselector

    respondsToSelector 用来判断某一个方法时候实现(下面的代码意思:如果baseAPIdidStartRequest这个方法实现了,那么就去调用,防止出现异常)

    if ([self.delegate respondsToSelector:@selector(baseAPIdidStartRequest:)]) {

    [self.delegate baseAPIdidStartRequest:self];

    }

    4. MJExtension 

       可以看这个作者的序列化框架MJExtension详解 + iOS ORM框架 - 简书

    5.masonry

    第三方库:Masonry。这个库使用率相当高,在全世界都有大量的开发者在使用,其star数量也是相当高的。

    这个到时候我到时候单独写一篇文章

     6.#import 跟 @class的区别

    在ClassA.h中

    #import ClassB.h 相当于#include整个.h头文件。如果有很多.m文件#import ClassA.h,那么编译的时候这些文件也会#import ClassB.h增加了没必要的#import,浪费编译时间。在大型软件中,减少.h文件中的include是非常重要的。

    如果

    只是 ClassB 那就没有include ClassB.h。仅需要在需要用到ClassB的.m文件中 #import ClassB.h

    那么什么时候可以用呢?

    如果ClassA.h中仅需要声明一个ClassB的指针,那么就可以在ClassA.h中声明

    @ClassB

    ...

    ClassB *pointer;

    7,NSstring为啥是copy

    假如有一个NSMutableString,现在用他给一个retain修饰 NSString赋值,那么只是将NSString指向了NSMutableString所指向的位置,并对NSMUtbaleString计数器加一,此时,如果对NSMutableString进行修改,也会导致NSString的值修改,原则上这是不允许的. 如果是copy修饰的NSString对象,在用NSMutableString给他赋值时,会进行深拷贝,及把内容也给拷贝了一份,两者指向不同的位置,即使改变了NSMutableString的值,NSString的值也不会改变.

    相关文章

      网友评论

        本文标题:基础问题

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