• iOS面试题面试常问问题


    1. #include、#import、@class的区别?

    • 在C 语言中, 我们使用 #include 来引入头文件,如果需要防止重复导入需要使用#ifndef...#define...#endif
    • 在OC语言中, 我们使用#import来引入头文件,可以防止重复引入头文件,可以避免出现头文件递归引入的现象。
    • @class仅用来告诉编译器,有这样一个类,编译代码时,不报错,不会拷贝头文件.如果需要使用该类或者内部方法需要使用 #import导入

    2. id 和 instancetype的区别?

    • id可以作为方法的返回以及参数类型 也可以用来定义变量
    • instancetype 只能作为函数或者方法的返回值
    • instancetype对比id的好处就是: 能精确的限制返回值的具体类型

    3. New 作用是什么?

    1. 向计算机(堆区)申请内存空间;
    2. 给实例变量初始化;
    3. 返回所申请空间的首地址;

    4.OC实例变量的修饰符? 及作用范围?

    @puplic 

     1.可以在其他类中访问被@public修饰的成员变量
     2.也可以在本类中访问被@public修饰的成员变量
     3.可以在子类中访问父类中被@public修饰的成员变量
    
     @private
    1.不可可以在其他类中访问被@private修饰的成员变量
    2.也可以在本类中访问被@private修饰的成员变量
    3.不可以在子类中访问父类中被@private修饰的成员变量

    @protected (默认情况下所有的实例变量都是protected)
    1.不可可以在其他类中访问被@protected修饰的成员变量
    2.也可以在本类中访问被@protected修饰的成员变量
    3.可以在子类中访问父类中被@protected修饰的成员变量
    
     @package
    介于public和private之间的,如果是在其他包中访问就是private,在当前代码中访问就是public.
    

    5. @proprety的作用

    @property = ivar + getter + setter
    1. 在.h文件中帮我们自动生成getset方法声明
    2. 在.m文件中帮我们生成私有的实例变量(前提是没有在.h文件中没有手动生成)
    3. 在.m文件中帮我们是实现get和set方法的实现
    • 注意:
      在使用@property情况下,可以重写getter和setter方法.需要注意的是, 当把setter和getter方法都实现了之后,实例变量也需要手动添加
     

     
  • 相关阅读:
    线性表3 数据结构和算法08
    线性表3 数据结构和算法08
    线性表的链式存储结构
    OD使用教程9 调试篇09|解密系列
    线性表
    线性表
    线性表
    OD使用教程9 调试篇09|解密系列
    验证中英文数字和下划线中划线
    formEl.submit is not a function的原因
  • 原文地址:https://www.cnblogs.com/edensyd/p/16404753.html
Copyright © 2020-2023  润新知