美文网首页
iOS知识点-P5

iOS知识点-P5

作者: nande_糊涂 | 来源:发表于2022-07-18 11:00 被阅读0次

路虽弥,不行不至;事虽小,不做不成 --荀子·修身

1、如何访问并修改一个类的私有属性?

1). 一种是通过KVC获取。
2). 通过runtime访问并修改私有属性。

2、一个objc对象的isa的指针指向什么?有什么作用?

指向他的类对象,从而可以找到对象上的方法。

3、isKindOfClass、isMemberOfClass、selector作用分别是什么

isKindOfClass:作用是某个对象属于某个类型或者继承自某类型。
isMemberOfClass:某个对象确切属于某个类型。
selector:通过方法名,获取在内存中的函数的入口地址。

4、delegate 和 notification 的区别

1). 二者都用于传递消息,不同之处主要在于一个是一对一的,另一个是一对多的。
2). notification通过维护一个array,实现一对多消息的转发。
3). delegate需要两者之间必须建立联系,不然没法调用代理的方法;notification不需要两者之间有联系。

5、什么是block?

闭包(block):闭包就是获取其它函数局部变量的匿名函数。

6、block反向传值

在控制器间传值可以使用代理或者block,使用block相对来说简洁。

在前一个控制器的touchesBegan:方法内实现如下代码。

  // OneViewController.m
  TwoViewController *twoVC = [[TwoViewController alloc] init];
  twoVC.valueBlcok = ^(NSString *str) {
    NSLog(@"OneViewController拿到值:%@", str); 
  };
  [self presentViewController:twoVC animated:YES completion:nil];

  // TwoViewController.h   (在.h文件中声明一个block属性)
  @property (nonatomic ,strong) void(^valueBlcok)(NSString *str);

  // TwoViewController.m   (在.m文件中实现方法)
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    // 传值:调用block
    if (_valueBlcok) {
        _valueBlcok(@"123456");
    }
}

7、block的注意点

1). 在block内部使用外部指针且会造成循环引用情况下,需要用__week修饰外部指针:
    __weak typeof(self) weakSelf = self; 
2). 在block内部如果调用了延时函数还使用弱指针会取不到该指针,因为已经被销毁了,需要在block内部再将弱指针重新强引用一下。
    __strong typeof(self) strongSelf = weakSelf;
3). 如果需要在block内部改变外部栈区变量的话,需要在用__block修饰外部变量。

8、BAD_ACCESS在什么情况下出现?

这种问题在开发时经常遇到。原因是访问了野指针,比如访问已经释放对象的成员变量或者发消息、死循环等。

9、lldb(gdb)常用的控制台调试命令?

1). p 输出基本类型。是打印命令,需要指定类型。是print的简写
    p (int)[[[self view] subviews] count]
2). po 打印对象,会调用对象description方法。是print-object的简写
    po [self view]
3). expr 可以在调试时动态执行指定表达式,并将结果打印出来。常用于在调试过程中修改变量的值。
4). bt:打印调用堆栈,是thread backtrace的简写,加all可打印所有thread的堆栈
5). br l:是breakpoint list的简写

10、你一般是怎么用Instruments的?

Instruments里面工具很多,常用:
1). Time Profiler: 性能分析
2). Zombies:检查是否访问了僵尸对象,但是这个工具只能从上往下检查,不智能。
3). Allocations:用来检查内存,写算法的那批人也用这个来检查。
4). Leaks:检查内存,看是否有内存泄露。

相关文章

网友评论

      本文标题:iOS知识点-P5

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