OC特有的语法问题总结

2016-05-17  本文已影响85人  木子尚武
分类(类别、类目)

Block:

 - block带有参数的block的定义和使用

```objc
  void (^block名称)(参数列表)
  = ^ (参数列表) { // 代码实现; }

   例如:
   void (^myBlock)(int) = ^(int num){ NSLog(@"num = %i", num); };
   返回类型 (^block名称)(参数列表)
= ^ (参数列表) { // 代码实现; }

    例如:
int (^myBlock)(int, int) = ^(int num1, int num2){ return num1 + num2; };
    block变量名(实参);
   ```  
####  运行时:
-  运行时简介:
  -  runtime即运行时,oc就是这种运行时机制,其中最主要的就是消息机制
  -  oc是一门动态编译语言,他在编译的时候并不能决定调用哪个函数,即使这个函数只有声明而没有实现也不会报错。而如果调用了没有实现的方法,c语言是会报错的。
- 主要的使用场景:
  -  发送消息
      -   方法调用的本质:让对象发送消息(只有对象才能发送消息)
  -  交换方法(系统自带的方法功能不够,需要扩充方法,保持原有功能)
      -  方法一:集成系统的类,重写方法
      -  方法二:使用runtime,交换方法
  -  动态添加方法
      -  使用场景: 一个类的方法非常多,加载类到内存的时候需要给每个方法生成映射表,十分耗费资源,这时候可以采用动态的给每个类来添加方法
  -   给分类添加属性
     - 给一个类添加属性,本质是给这个类添加关联,公布时把这个值得内存空间添加到类的内存空间
  -  字典转模型

-  简述app的完整启动过程
 (有storyboard)
  -  执行main函数
  -  执行UIApplicationMain函数
  -  创建UIAppliction对象,并设置UIApplication的代理
  -  开启一个主运行循环,保证应用程序不退出
  -  加载info.plist配置文件,判断info.plist文件当中有没有Main storyboard file base name,如果有就去加载info.plist中指定的文件,如果没有,则加载完毕

    (没有storyboard)
-  HTTP和TCP协议的区别:
  -  HTTP协议是构建在TCP协议基础之上的,运行在应用层,而TCP运行在传输层
 -  HTTP是无状态的短连接,规定了如何进行缓存以及请求的格式,而TCP是有状态的长连接,因此传递数据是安全的。
 -  HTTP可以处理从哪儿请求,如何请求;而TCP负责保证数据传输的安全性。
-  写一个标准的宏MIN,返回最小的数:
  -  \#define MIN(A,B) ((A) <= (B)? (A) : (B))
-  多线程的底层实现:
  - 什么是多线程:在多线程开发中,一个程序对应一个进程,而一个进程至少对应一个线程,其中每个线程都可以执行不同的任务(UI刷新、触摸点击事件)也就是说线程是执行进程的最基本的单元。整个多线程基于mach来实现
  -  应用的开发场景有c对应的pthread、oc对应的NSThread以及GCD和NSOpreation,最常见得是GCD和NSOpreation,其中NSOpreation和NSOpreationQueue又是GCD的封装。

上一篇 下一篇

猜你喜欢

热点阅读