iOS开发 基础二

2020-12-29  本文已影响0人  喜剧收尾_XWX

1.Flutter和RN有什么区别,你更看好那个?

我个人更看好flutter,集成调试更加简单,界面写起来也更加灵活,生态也在不断完善中.

2.oc可以实现多继承么?如何实现

参考链接 https://www.jianshu.com/p/9601e84177a3

3.iOS如何实现多态?

父类指针指向子类对象。通过继承实现。

4.合并两个有序数组

https://www.jb51.cc/iOS/525946.html

5.深拷贝与浅拷贝的区别?

 NSString *str = @"hello word!";
 NSString *strCopy = [str copy] // 指针复制,strCopy与str的地址一样
 NSMutableString *strMCopy = [str mutableCopy] // 内容复制,strMCopy与str的地址不一样
 NSMutableString *mutableStr = [NSMutableString stringWithString: @"hello word!"];
    NSString *strCopy = [mutableStr copy] // 内容复制
    NSMutableString *strMCopy = [mutableStr mutableCopy] // 内容复制
 NSArray *arr = @[@[@"a", @"b"], @[@"c", @"d"];
 NSArray *copyArr = [arr copy]; // 指针复制
 NSMutableArray *mCopyArr = [arr mutableCopy]; //单层内容复制
NSMutableArray *array = [NSMutableArray arrayWithObjects:[NSMutableString stringWithString:@"a"],@"b",@"c",nil];
 NSArray *copyArr = [mutableArr copy]; // 单层内容复制
 NSMutableArray *mCopyArr = [mutableArr mutableCopy]; // 单层内容复制

6.NSArray为什么不能用strong修饰?

总结:使用copy的目的是,防止把可变类型的对象赋值给不可变类型的对象时,可变类型对象的值发送变化会无意间篡改不可变类型对象原来的值。

https://www.jianshu.com/p/a4892d1931f3

7.修饰的关键字?

8.atomic原子性是绝对线程安全的么?

9.网页的缓存策略?

10.WKWebview与UIWebview的对比?

https://www.jianshu.com/p/72ca72098d81

11这个写法会出什么问题:@property (nonatomic, copy) NSMutableArray *arr;

问题:添加,删除,修改数组内的元素的时候,程序会因为找不到对应的方法而崩溃。

-[__NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance 0x7fcd1bc30460

12.写一个 setter 方法用于完成 @property (nonatomic, retain) NSString *name,写一个 setter 方法用于完成 @property (nonatomic, copy) NSString *name

// retain
- (void)setName:(NSString *)str {
  [str retain];
  [_name release];
  _name = str;
}
// copy
- (void)setName:(NSString *)str {
  id t = [str copy];
  [_name release];
  _name = t;
}

13.如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?

若想令自己所写的对象具有拷贝功能,则需实现 NSCopying 协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现 NSCopying 与 NSMutableCopying 协议。
具体步骤:
1. 需声明该类遵从 NSCopying 协议
2. 实现 NSCopying 协议的方法。

        // 该协议只有一个方法: 
        - (id)copyWithZone:(NSZone *)zone;
        // 注意:使用 copy 修饰符,调用的是copy方法,其实真正需要实现的是 “copyWithZone” 方法。

14.保护线程安全的几种方式

https://www.jianshu.com/p/e21baa43217e

上一篇 下一篇

猜你喜欢

热点阅读