美文网首页将来跳槽用技术
iOS_OC几个基础问题

iOS_OC几个基础问题

作者: 萧修 | 来源:发表于2023-03-13 18:04 被阅读0次

    include、import、@class的区别

    include是C语言的导入,编译时会导入多次,可通过一些指令减少重复导入
    import是OC预约的导入,苹果底层已经处理,仅仅导入一次
    @class是引入这个类名字,并没有链接导入这个类的属性和方法

    什么是框架

    框架是一系列指令集和方法的结合,组成一个库,如Foundation框架

    C语言字符和OC字符串

    "",@""OC字符串是对象@

    将.m文件如何转为.c和.cpp文件

    这个步骤可用于了解苹果底层实现 如block、类的本质,分类的本质

    cclang -rewrite-objc main.m -o main1.c
    

    static、const关键字

    static定义变量存在全局区,不能运行时赋值,因此必须初始化或者为nil
    const修饰全局变量叫 全局常量,不可修改

    int a = 10;
    const int *p = &a;; //常量指针 值不可修改,引用指向可改
    
    int a = 10;
    int * const p = &a;//指针常量,指向不可改,指向的值可改
    

    简述NULL和nil

    都宏定义为0,指向内存为0的空间
    一个C语言的,
    OC的类,OC类置nil,发送消息不会闪退。空指针了解下。
    但是获取公开的成员变量会导致crash

    演示一下try_catch不能处理所有的异常

    Perspon *p = nil;
            @try {
                p->_score = @"";
            } @catch (NSException *exception) {
                NSLog(@":exception%@",exception);
            }
    

    反射机制几种用法

    反射概念
    概念:是程序在运行期间根据类的名称动态获取类的信息,动态的创建类以及动态调用类的方法
    应用:根据需要创建某个对象,

    判断类是某个类的子类 或者类本身
    对象方法是否能够响应
    协议是否遵循

    类的判断:
    -(BOOL)isKindOfClass:(Class)aClass;//判断类是否是某个类或者某个子类的实例
    -(BOOL)isMemberOfClass:(Class)aClass;//
    方法响应:
    -(BOOL)respondsToSelector:(SEL )aSelector;//判断对象是否实现这个方法
    -(BOOL)conformsToProtpcol:(Protocol *)aProtocol;//判断当前对象是否遵从某个协议
    方法选择器和字符串转换:NSStringFromSelector(SEL aSelector),NSSelectorFromNSString(NSString *aSelectorName)
    类和字符串的转换:NSStringFromClass(Class aclass),NSClassFromNSString(NSString *aClassName)
    

    相关文章

      网友评论

        本文标题:iOS_OC几个基础问题

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