SHARE
TWEET

Untitled

a guest Jul 15th, 2019 78 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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。
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top