将来跳槽用技术

iOS_OC几个基础问题

2023-03-13  本文已影响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)
上一篇下一篇

猜你喜欢

热点阅读