OC特有的语法问题总结

分类(类别、类目)
  • 作用
    • 在不修改原来类的基础上,扩充一些方法
    • 一个庞大的类可以分模块开发
    • 一个庞大的类可以由多人编写,利于团队合作
  • 格式
    • .h文件中声明
         @interface ClassName(CategoryName)
               NewMethod;
         @end
         1.ClassName : 原类名(要为哪个类扩展方法)
         2.CategoryName :需要添加的类名
         3.NewMethod : 需要添加的方法
         4.不能定义变量
      
  • 注意事项:
    • 只能增加方法,不能增加成员变量
    • @property只会生成getter和setter方法,不会生成实现私有成员变量
    • 分类可以访问原来类中的成员变量
    • 如果出现分类和原类出现方法同名的情况,优先调用分类中的方法,原类中的方法会被忽略掉
  • 分类的编译顺序:
    • 多个分类中有同名方法,则执行最后编译的方法
    • 方法调用的优先级:
      • 分类(最后编译的的方法优先)
      • 原类
      • 父类
  • 类扩展:
    • 没有分类名称的分类,可以被认为是匿名的分类。可以声明私有的方法和属性

Block:

  • Block简介:

  • Block是一种特殊的数据类型,在动画、多线程、网络请求回调中有着广泛的应用。可以保存一段代码,在合适的时候取出来,功能类似于函数和方法

  • Block格式:

    • 大体格式:
       返回值类型 (^block变量名)(形参列表) = ^(形参列表){};
    
    • block最简单形式
    void (^block名)() = ^{代码块;}
    
     例如:
     void (^myBlock)() = ^{ NSLog(@"李南江"); };
    
 - block带有参数的block的定义和使用

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

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

    例如:
int (^myBlock)(int, int) = ^(int num1, int num2){ return num1 + num2; };
  • 调用Block保存的代码
    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的封装。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,647评论 18 139
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,703评论 0 9
  • iOS代码块Block 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,B...
    smile刺客阅读 2,344评论 2 26
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,620评论 18 399
  • 重置远程仓库的地址 在项目的根目录下执行下面的命令:
    JohnShen阅读 298评论 0 0