zoukankan      html  css  js  c++  java
  • oc语言--语法

    一、OC简介

    1.简介

      它是C语言的基础上,增加了一层面向对象语法

      OC完全兼容C语言

      可以在OC代码中混入C语言代码,甚至是C++代码

      可以使用OC开发mac OS X平台和IOS平台的应用程序

    2.关键字

     1> 基本上所有的关键字都是以@开头

     2> 关键字

      @interface、@implementation、@end

      @public、@protected、@private、@selector

      @try、@catch、@throw、@finally 

      @protocol、@optional、@required、@class

      @property、@synthesize、@dynamic

      self、super、id、_cmd、__block、__strong、__weak

     3> 字符串以@开头

      例如@"Hello"是OC中的字符串,而"Hello"则是C语言中的字符串

     4> OC程序开发过程

     5> 跟C语言一样,OC成粗的入口依然是main函数

      终端指令也一样。编译cc –c main.m ;链接cc main.o ;运行./a.out

     6> NSLog和printf的区别 

      ① NSLog接收OC字符串作为参数,printf接收C语言字符串作为参数

      ② NSLog输出后会自动换行,printf输出后不会自动换行

      ③ 使用NSLog需要 #import <Foundation/Foundation.h>

      ④ 使用printf需要 #include <stdio.h>

     7> #import的作用

      ① 跟#include一样,用来拷贝某个文件的内容

      ② 可以自动防止文件内容被拷贝多次,也就意味着头文件中不用加入下面的预处理指令了

      #ifndef    _STDIO_H_

      #define   _STDIO_H_

      #endif

     8> Foundation框架的作用

      ① 开发OC、iOS、Mac程序必备的框架

      ② 此框架中包含了很多常用的API(应用编程接口)

      ③ 框架中包含了很多头文件,若想使用整个框架的内容,包含它的主头文件即可

        #import <Foundation/Foundation.h>

    二、面向对象和面向过程的思想

      OC是面向对象的,C是面向过程的。面向对象和面向过程只是解决问题的两种不同思想

    1.面向对象和面向过程的区别

     1>以用电脑看电影为例

     a.面向过程

     ①打开电脑  ②播放电脑中的电影  ③关闭电脑

     b.面向对象

     ①电脑 (开机、播放电影、关机)

     2> 区别

      ① 面向过程关注的是解决问题需要哪些步骤;面向对象关注的是解决问题需要哪些对象

      ② 没有开发经验很难感受到它们的区别,两种思想都能达到解决问题的目的,但是解决思路不一样

    三、类和对象的关系

    1.OC中的面向对象

     1> OC中的类相当于图纸,用来描述一类事物。也就是,要想创建对象,先有类

     2> OC利用类来创建对象,对象是类的具体存在

     3> 面向对象解决问题应该是先考虑需要设计哪些类,再利用类来创建多少对象

    2.如何设计类

      类的设计,只关注3样东西

     1> 事物名称(类名):人(person)

     2> 属性:身高(height)、年龄(age)

     3> 行为(功能):跑(run)、吃饭(eat)

    四、定义OC的类和创建OC对象

    1.要拥有一个类,需要有两个步骤:类的声明和实现

     1> 类的声明,声明对象的属性和行为

      @interface Car : NSObject

      {  

        int speed; //成员变量--速度

        int wheels; //成员变量--车轮个数

      }

      - (void) run;// 跑的行为;方法的声明

      @end

     2> 类的实现,

      @implementation Car // 类的实现

      - (void) run // 方法的实现

      {

        NSLog(@"车跑起来了");

      }

      @end

    2.创建对象

     int main()

     {

        Car *c = [Car new]; // 创建车子对象,并且返回对象的地址,同时用指针保存对象地址

        c->wheels = 3; //利用指针访问成员变量

        c->speed = 300; //利用指针访问成员变量

        [c run];// 对象调用方法,[行为执行者  行为名称];同时也是OC的消息机制,给指针所指向的对象发送一条消息

        return 0;

     }

    3.常见错误和注意点

     1> 常见错误

      只有类的声明,没有类的实现

      漏了@end

      @interface和@implementation嵌套

      两个类的声明嵌套

      成员变量没有写在括号里面

      方法的声明写在了大括号里面

     2> 注意点

      成员变量不能在{}中进行初始化、不能被直接拿出去访问

      方法不能当做函数一样调用

      成员变量、方法不能用static等关键字修饰,不要跟C语言混淆

      类的实现可用写在main函数的后面,主要在声明后面就行了

    五、OC方法和函数的区别

    1.常见错误

      OC方法只能声明在@interface和@end之间,只能实现在@implementation和@end之间。也就是说OC方法不能独立于类存在

      C函数不属于类,跟类没有联系,C函数只归定义函数的文件所有

      C函数不能访问OC对象的成员

      易犯错误:方法有声明,但是实现的时候写成了函数

    2.OC方法注意

      方法只有声明,没有实现(经典错误)

      方法没有声明,只有实现(编译器警告,但是能调用,OC的弱语法)

      编译的时候:访问没有声明的成员变量直接报错,访问没有声明的方法,只是警告

     六、自我总结

      语法是教我们如何更好的学习和运用一门语言,我们日常使用的语言如此,计算机语言亦是如此。所以语法使我们学习一门语言的基础也是根本,所以我们必须了解、掌握并熟练应用计算机语言语法,才能更好的编写出符合规范的好的应用程序。学习过程中,可能不明白这个语法为什么是这个样子,他为什么是这样规定的,我直接搞不明白,它完全不符合我的逻辑,我在学习中就遇到了这样和那样的语法问题,这是你不必纠结和计较他为何是这样,你只要知道他就是这样就可以了,你暂且这样记着,以后随着学习的不断深入和经验的不断丰富,你就会渐渐的明白这样做的好处,这也是我不断发现问题和解决问题的一个过程,希望对大家有帮助。

      

  • 相关阅读:
    参数迭代的初始值
    印刷体、手写体公式图片OCR识别转latex
    混合型变量聚类的观点
    算法优化大概的方法
    梯度下降法
    支持向量机-可分的类
    LaTex希腊字母
    红黑树删除操作
    红黑树插入操作
    红黑树
  • 原文地址:https://www.cnblogs.com/smqh/p/4242476.html
Copyright © 2011-2022 走看看