1.Object-C的类可以多继承吗?可以实现多个接口吗?Category是什么?重写一个类得方式用继承好还是分类好,问什么?
Object-c不可以多继承,oc里面都是单继承,多继承可以用protocol 委托代理来模拟实现,可以实现多个接口,可以通过实现多个接口完成oc 的多重继承。
category 是类别,也叫类目,用category 重写类的方法它仅仅对本category 有效,并不会影响到其他类和原有类的关系,如果要是在不修改原有类的基础上增加原有类没有的方法,就用类目。与原有类方法同名会优先使用本类的方法(category并不是绝对的覆盖了类的同名方法,而是catrgory的方法被排在了类的同名方法之前,而方法的检索方式是顺序检索,所以在调用方法时,调用到的同名方法是category的,进而产生了覆盖效果。)。
category中无法直接添加属性,但是在category中可以利用运行时添加属性。 如此便可以在类中利用点语法调用name属性 - (void)setName:(NSString *)name {
objc_setAssociatedObject(self, "name", name,OBJC_ASSOCIATION_COPY);
}
- (NSString *)name {
NSString *nameOject = objc_getAssociatedObject(self, "name");
return nameOject;
}
继承其可以重写父类的方法,只是子类继承父类的方法来使用。
2.extension(类的扩展)
能为某个类附加额外的属性,成员变量,方法声明。
一般类的扩展写到.m文件中,创建类的扩展只有.h文件
一般私有属性写到类扩展,类扩展里的属性,成员变量,方法都是私有的,只有本类可以访问,其他类不能访问
3.如何对iOS设备进行性能测试?
Profile->Instruments->Time Profiler
应用卡顿或者内存占用过多一般使用Instrments里的来进行检测。
复杂情况可能就需要用到子线程监控主线程的方式来了