结合别人和自己总结的小问题
1.ios创建单列的两种方法(MRC ARC)
答:ARC +(arcobject *)shard{
static arcobject* shardobject =nil;
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
shardobject=[[self alloc]init];
});
return shardobject;}
答:MRC static mrcobject*shardobject=nil;
+(mrcobject *)shard{
if(!shardobject){
shardobject = [[self allocWithZone:NULL]init];
}
return shardobject;
}
2.object-c可以有多继承吗?可以实现多个接口吗?
答:object-c不能有多继承,可以实现多个接口,通过实现多个接口来完成c++的多继承。
3.#import #include @class之间的区别
答:#import是object-c里面导入头文件的关键字,使用#import只会导入一次不会重复导入 #include是c的导入头文件的关键字 @class是一个声明关键字,当执行时才会查看类的实现文件,可以解决头文件的相互包含。
4.属性readwrite readonly assign retain copy 各是什么作用,在哪种情况下使用
答:readwrite是可读可写 ,需要生成getter setter方法时使用
readonly只可读 只生成getter方法 不允许属性在类外发生改变
assign赋值特性 setter方法传入参数赋值给实例变量,仅用于赋值
retain表示持有特性 setter方法传入参数先保留再赋值,传入的参数的retaincount加1
copy表示拷贝特性 setter方法将传入对象赋值一份,需要完全一份新变量时
5.id nil分别代表什么
答:id声明的对象可以指向任何object-c类型的对象 需要注意的是id是个指针,所以在使用id的时候不需要加*号 而id *foo=nil则定义了一个指针,这个指针指向另一个指针
nil和c中的NULL相同nil表示一个object-c对象,这个对象的指针指向空
6.object-c如何对内存进行管理
答:object-c对内存管理主要有三种方式1arc(自动内存计数)2手动内存管理 3自动释放池
7.在object-c里面创建线程的方法是什么?在主线程中执行代码,方法是什么?如果想延迟执行代码 方法是什么?
答创建线程方法有三种 1 nsthread 2gcd 3nsoperation然后再将其加入队列中
执行主线程中执行代码performselectonmainthread
延迟执行
// [self performSelector:@selector() withObject:<#(id)#> afterDelay:<#(NSTimeInterval)#>];
8.ios mvc开发模式
答:mvc 视图 模型 控制 所有的view都是属于视图 它独立模型层 由视图控制层控制 所有用户数据都是模型层 它独立于视图层 所有viewcontroller都是控制层 它负责控制视图 访问数据模型层