Advertisement
Guest User

Untitled

a guest
Jul 15th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.16 KB | None | 0 0
  1. # Joyeyihe 实习日记 DAY1
  2.  
  3. ## 今日完成
  4.  
  5. ### 主要内容
  6.  
  7. ​ 从昨天入职到今天一直在学习objective-C的基础语法,目前为止已经看完了Basic Objective-C。包括:
  8.  
  9. - 基本语法
  10. - 数据类型、类型转换
  11. - 常量、变量
  12. - 操作符
  13. - 循环、分支、条件
  14. - 类
  15. - 语句块
  16. - Number、String、数组、指针
  17. - 预定义、宏
  18. - 日志处理、错误处理
  19.  
  20. ### 个人总结
  21.  
  22. ​ 因为之前学过c/c++和Java,了解到Obj-C 是以c为基础,扩充出来的面向对象的语言,所以在学习的过程中一直和c/c++以及Java类比来学习。总结出以下几点不同于c/java,或者需要注意的地方,方便以后学习:
  23.  
  24. 1. **NS前缀**。一开始学习时看到很多NSString, NSLog 觉得很奇怪,后来才知道OC中没有命名空间,所以用公司前缀来区分各个集合框架,降低命名冲突。以后看见NS前缀就知道是Cocoa中的系统类。
  25. 2. **类**。 OC中的类与c++和Java都有很大不同,主要体现在以下几点
  26. - 类的定义必须分为接口和实现两个部分
  27. - 接口部分一定要有一个基础的父类
  28. - 成员变量一定要紧跟着接口名称并且用大括号单独括起来
  29. - 用 + 和 - 区分类方法和实例方法
  30. - 数据类型要加括号,如(int)
  31. - 方法的声明、定义和调用都很不一样
  32. - 声明与定义都是参数列表很不一样,参数列表不是在括号里面,而且参数之间用冒号隔开。
  33. - OC比c/c++和Java多了形参标签,资料上说通过形参标签可以看出这个参数的作用,增加可读性,可是我觉得直接将参数名称命为形参标签不是更容易使用吗?可能只有真正开始开发才能体会到形参标签的好处吧。
  34. - 方法的调用是使用[objectName/className methodName]的方式,这一点我还不太习惯。
  35. - 类外部的普通函数的声明、定义和调用与c/c++没有区别。
  36. - 类的实例化,需要用到alloc 和 init,调用两次方法。
  37. 3. **Block块**。一开始我以为它只是将几行代码用括号括起来再取个名字方便使用,后来发现不只是这样。
  38. - 块变量可以像其他变量一样被赋值,初始化之后也可以改变。
  39. - 块直接定义在函数体里,但如果不调用它是不会执行的。
  40. - 块可以作为参数
  41. - 块可以访问程序中局部变量的值,但不可以更改。
  42. 4. **包装类**。 包装类听起来有点像java中的Integer和String,但是又很不一样,OC中的包装类指的是NSValue和NSNumber。**NSInteger不是包装类**。包装类将OC中的基本数据类型都包装成了类,这样在NSArray和NSSet中就可以将这些数据都添加进去了,这个跟Java中基本类型的装箱也不一样。
  43. 5. **预处理**。
  44. - 在OC中不仅程序的运行中可以用if else来选择要执行的代码块,还可以使用#ifdef,#ifndef等干涉程序的编译过程,这为程序的调试提供了很大的方便,因为很多时候程序的调试和线上运行需要的代码并不完全一样,这样可以避免编译不必要的代码,上线时也可以直接修改宏定义。
  45. - OC中的头文件不是使用#include导入,而是使用#import,就不用担心某个文件被重复导入了。
  46. 6. **自动释放池**。在c/c++中,所有的内存都需要程序员手动释放,而在Java中,由于有垃圾回收机制,程序员不用关心内存释放的问题,而OC相当于介于两者之间,不需要完全手动释放,但需要写上自动释放池。
  47.  
  48. ## 自我评价
  49.  
  50. ​ 昨天刚入职时知道要学习Objective-C,配置完工作需要的各种软件后便开始着手学习。由于拿到的资料有好几份,又全是英文的,对OC一开始也完全不了解,所以耽误了很多时间。后来就重点在一个网站上学,由于资料是英文的,所以有一些不是很懂的地方就再去参考其他的资料。语言很多都是互通的,所以在看的过程跟c/c++一样的语法等我都只是大概看了一下,重点看的是跟自己的思维习惯不一样的地方,由于资料上的例子很简略,所以遇到以前没有用过的用法我都会自己按照自己的想法多敲几遍,看有哪些互通,哪些不一样。由于这些知识点太细碎,所以干脆建了个便签,有什么想法或者觉得有什么需要注意的就先简单记下来,写总结的时候对照着写就很快了。
  51.  
  52. ​ 每一门语言都有它自己的特点,细节上的东西很多,但是初学阶段我没有太过于关注这些,很多记不住的东西以后在用的过程中也可以随时查,时间长了也就记住了。我觉得现在最重要的是理解它的编程思想,把核心的东西掌握住,然后再做一个demo,进行更系统的练习,在这个过程中慢慢提高自己的技能和熟练度。
  53.  
  54. ## 明日计划
  55.  
  56. ​ 明天的计划是学习Advanced Objective-C, 包括继承、封装、多态、协议、动态绑定等。如果面向对象的部分与Java比较相似就会看的比较快,如果不太相似可能会比较慢。学完了就写一个比较完整的面向对象的示例,然后继续学习Objective-C Useful Resources。
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement