OC的基础语法(一)

1.很多语言都是从helloWorld开始学习的,OC的helloWorld如下:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // OC版的HelloWorld
        NSLog(@"Hello, World!");
    }
    return 0;
}

2.代码分析

 1)头文件

  对比c语言中的#include学习

 #include <stdio.h>文件包含,把.h文件的内容拷贝到
 当前些 #include 位置

 #import <Foundation/Foundation.h>  文件包含,把.h文件的内容拷贝到
 当前些 #import 位置,Foundation/Foundation.h 这是OC中的一个框架

 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks

    关于include 和 import 的区别:

     #include  ""  -用户定义的文件
     #include  <>  -系统的文件

     #import <>    -系统的文件
     #import ""    -用户的文件

     improt 是 include 升级版,自动防止重复包含,即便是重复的包含了,也只有一次包含会起作用

  2)main 主入口函数

     系统调用主入口函数

  3)NSLog,输出内容到控制台
 

3.C和OC的对比

/*

 1)源文件对比

    C               OC
 .c                 .h
 .h                 .m  - OC的源文件
 .o
 .out

 2)数据类型、运算符

    C                OC
 基本数据类型
 构造类型
 指针类型
 空类型
 定义类型
                   BOOL      新的类型,存储YES 和 NO
                   id        万能的指针
                   Boolean   布尔类型,跟BOOL相似,存储的时 true 和 false
                   Class     类类型
                   特殊类型
                        SEL  方法的选择器
                        nil  空的(对象为空)
                        block 块类型

 3)关键字、标示符

    C               OC
    32关键字         @...

    注意:C的关键字可以在OC中使用,OC的关键字不能在C中使用
         OC的关键字,大多数都是以 @ 开头

 4、语句控制(分支和循环)

    C               OC
  ----------------->
  1)分支
    if
    if else
    if else if else

    switch

  2)循环
    --------------->
    while 

    do while

    for

                   增强型的for循环(OC的快速枚举)

                   for in

                   格式:
                    for(数组类型 变量名 in 数组){

                              变量名;//直接使用,变量每次存储的值是不一样
                    }

  5、函数定义对比

      C                            OC
  返回值 函数名(形参){            OC中的函数不再叫"函数",叫方法

     函数体                     OC中的方法,分为两种:对象方法、类方法

  }

   //函数的调用
   函数名(实参);                 对象方法的调用:[对象名 方法名]
                               类方法的调用:[类名 方法名]

  6、OC中新增加的两个数据类型介绍

     逻辑型:BOOL   Boolean

     C                       OC

     &&                      BOOL
     ||                      Boolean
      !    

     BOOL  存储的时YES和NO

      YES 表示真   实际的值 1
      NO  表示假   实际的值 0

     Boolean 存储的时true 和 false

     true 表示真   实际值  1
     false 表示假  实际值  0

 */

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {

//        NSArray *arr = @[@"1",@"2",@"3"];
//
//        for (NSString *str in arr) {
//
//            //输出字符串的内容
//            NSLog(@"%@",str);
//
//        }

        //1、BOOL 类型

        //定义BOOL变量
        BOOL flag = YES; //YES的值是 1
        flag = NO;       //NO的值就是 0
        flag = 3>3;
        printf("floag = %d\n",flag);

        //2、Boolean类型(布尔类型)
        Boolean f1 = true;  //true 1
        f1 = false;         //false 0

        printf("f1 = %d\n",f1);

        BOOL flag1 =YES;
        while (flag1) {

            flag = NO;
        }

    }
    return 0;
}

4.OC中的类

/*

 第一个OC类的定义:

   类的定义分为两部分:类的声明    类的实现

   1)类的声明写法

      格式:
      @interface  类名 :父类名
      {
          //成员变量的声明
      }

      //动作(方法)的声明
      @end

      声明一个学生类:

      @interface Student:NSObject
      {
          //属性的定义
          int age;
          int sno;
          float score;
      }

      //定义行为
      @end

   2)类的实现

      格式:
      @implementation 类名

      @end;

      实现一个学生类:实际上是实现类中声明的方法

      @implementation Student

      @end

      注意:
       1) @interface 、@implementation 、@end 一个oc的关键字
       2) @end 千万不能漏写
       3)类的声明和实现应该是成对出现

   3)对象的创建

         struct Student stu1;

         //定义一个Student 类型的变量
         //创建了一个Student类型的对象 对象名是 stu
         Student *stu = [Student new];

         [Student new];  //调用Student 的类方法

         做了三件事情:

         1)在内存的堆区分配一块内存
         2)给存储区域初始化(给类的每一个属性都初始化,基本数据类型,初始化为0,NSString 初始化为null)
         3) 返回刚分配的内存空间的首地址

    4)声明和实现类中的方法
 ‘
         在类的声明中 在 @interface  和  @end直接,并且在 属性声明的{}之外,就可以
         声明方法了

       声明方法:

          OC的方法有两个种:对象方法  和  类方法

               对象方法的特点:

               1)使用 - 号开头
               2)方法的返回值用 小括号括起来
               3)方法的名称严格遵守标示符命名规范
               4)对象想法,只能有 对象调用 

                 方法调用的格式:[对象名  方法名];

                  1)无参方法

                     -(返回值类型)方法名;

                     -(void)qiaoKe;
                     -(void)playGame;
                     -(void)tanlove;

                     实现:
                    在@implementation  和 @end之间
                     -(void)qiaoKe{

                     }

                  2)有参数的方法

                     (1)有一个参数的对象方法

                     -(返回值类型)xxx:(形参类型) 形参名;

                       注意:方法名:"xxx:"

                       调用:[对象名 方法名:实参];

                         实现:
                         在@implementation  和 @end之间
                         -(void)eat:(NSString *) foodName{

                         }

                      (2)有二个或者多个参数的对象方法的声明

                      -(返回值类型)xxx:(形参类型) 形参名  andSSS:(形参类型) 形参名;

                       方法名:
                               xxx:    andSSS:

                         //声明了两个参数的方法
                         -(void)tlove:(NSString *) gf1 andGirl2:(NSString  *) gf2;
                        调用: [stu  tlove:@"" andGirl2:@""];

 */

#import <Foundation/Foundation.h>

//声明一个学生类
@interface Student:NSObject
{
    //属性(成员变量/实例变量)的定义
    @public
    int age;
    int sno;
    float score;
}

//定义行为
//翘课
-(void)qiaoKe;
//打游戏
-(void)playGame;
//谈恋爱
-(void)tanlove;

//声明了一个吃饭的方法
-(void)eat:(NSString *) foodName;

//声明了两个参数的方法
-(void)tlove:(NSString *) gf1 andGirl2:(NSString  *) gf2;

-(void)tlove:(NSString *) gf1 :(NSString  *) gf2;

@end

//实现一个学生类
@implementation Student

//翘课
-(void)qiaoKe{

    NSLog(@"正在翘课!");
}
//打游戏
-(void)playGame{

   NSLog(@"正在玩都斗地主!");

}
//谈恋爱
-(void)tanlove{

   NSLog(@"正在小花谈恋爱!");
}

//吃的方法
-(void)eat:(NSString *) foodName{

    NSLog(@"正在吃: %@ ",foodName);
}

//声明了两个参数的方法
-(void)tlove:(NSString *) gf1 andGirl2:(NSString  *) gf2{

    NSLog(@"正在和%@交往的同时,和%@也有一腿!\n",gf1,gf2);

}

-(void)tlove:(NSString *) gf1 :(NSString  *) gf2{

     NSLog(@"正在和%@交往的同时,和%@也有一腿!\n",gf1,gf2);

}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {

        //创建一个学生类的对象
       Student *stu = [Student new];

        NSLog(@"age:%d,sno:%d,%.2f",stu->age,stu->sno,stu->score);

        //对象stu成员变量赋值
        //OC中默认的在类的外部不能访问类的成员变量
        //用@public 强制访问类的成员变量
        //通过对象stu进行赋值
        stu->age = 23;
        stu->sno = 110;
        stu->score = 56.78;

        NSLog(@"age:%d,sno:%d,%.2f",stu->age,stu->sno,stu->score);

        //用对象调用对象的方法
        [stu qiaoKe];
        [stu playGame];
        [stu tanlove];
        [stu eat:@"爆炒妙脆角"];

        //调用两个参数的方法
        [stu tlove:@"凤姐" andGirl2:@"芙蓉"];
        [stu tlove:@"凤姐" :@"芙蓉"];

    }
    return 0;
}
时间: 2024-10-28 04:31:10

OC的基础语法(一)的相关文章

C和OC的基础语法(易混淆的概念知识)

List 0. 深复制与浅复制, NSObject万能指针.id指针.instancetype区别,单例import.include.@class的区别 strong 与 weak 区别 #define  和  typedef的区别, static 与  extern 区别,@required与@optional 区 别,@private.@protected .@public.@package区别 变量的命名规则以及规范(4规则,2规范) 数据类型转换 printf与scanf,自增自减,逻辑

OC的基础语法(六)

1.动态类型检测方法 /* 动态类型检测的方法 1)判断对象所属关系 (1)判断某一个对象是否是指定类或者该类的子类的对象 (2)判断某一个对象是否是指定的类的实例对象 (3)判断某一个类是否是指定类 的子类 2)判断能否响应方法 1)判断对象能否调用指定的方法 2)判断类中是否有指定的方法 3)应用Select方法 1)没有参数 2)有参数 */ #import <Foundation/Foundation.h> #import "BigYellowDog.h" #imp

015-OC基础语法-OC笔记

学习目标 1.[了解]Objective-C语言简介 2.[掌握]第一个OC程序 3.[掌握]OC中的字符串 4.[熟悉]OC中的一些玩意 5.[了解]面向过程与面向对象 6.[掌握]类的声明和实现 7.[掌握]类的方法 一.Objective-C语言简介 Objective-C简称Obj-C或者OC,Objective的意思就是面向对象的.OC其实就是在C语言的基础之上,封装了一层面向对象的语法,他并不是一门全新的编程语言.OC是Mac OS X系统和iOS系统的主要开发编程语言,当然马上要被

【OC基础语法考试】

OC基础语法已经全部学完,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.接下来我会总结前面的OC基础语法,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请OC老鸟来喷~~ 试题如下: 1.将包含以下三个字符串@“1hello“,@“2word“,@”3good“的数组改写为字典,数字部分作为key,英文部分作为value.(15) 2.建立一个数组对象,使用3个不同的方法,使其引用计数增加为4,输出这个值,然后保证内存能够正确释放.(15) 3.使用

IOS_OC_基础语法

1.YES与NO Object-c 提供了 BOOL 类型, 但这个BOOL 类型和 C++里的并不一样: 在C++里一切非 0 值的东西都 为 true,而为 0 值的为 false.但是 Object-c 里 1 为 true 并被宏定义为 YES=1,0 为 false 并被宏定义为 NO=0. + (BOOL)isEquals:(int)x with:(int)y { return x - y; } if ([Provider isEquals:10 with:1021]) {// ==

Swift学习(1基础语法)

Swift     基础语法 基本 1.取消了预处理命令 2.取消了指针的概念 3.取消了NS前缀 4.大量将类替换成struct 5.";" 在同一行用来分割语句,如果不是同一行可以省略 6.可选项 7.playground 8.条件语句"if",空执行"()" 9.没有非0即真的逻辑 10.switch  (1)可以针对任意类型的值进行分支,不在局限在整数 (2)且一般不需要break. (3)可以用","分割可选值 (4

ios学习路线_OC基础语法

OC是面向对象的语言,同java,python等等一样. OC中的变量类命名同其他对象语言基本类似,写法遵循驼峰法则 一般命名用到的是下划线,字母,开头字符非数字,网上很多有说也可以$符号,其实命名中基本不会用到这个 OC里面的关键字也不多,如图: OC中分基本数据类型和指针类型(即指对象类型) 那么一些基本类型的范围值和写法,这里不一一说,网上太多了,随便百度下 下面废话也不多说,直接给个网上的ppt说明吧 其实写过面向对象语言的朋友,基本上这块so easy 这里可以下载oc的基础部分 io

Java基础语法

Java的基础语法中包含字符集.标识符和关键字.变量和常量.语句.注释.运算符和表达式这些基本要素. 一.关键字 编程语言都有一些保留的单词,用于定义该语言,这些单词对于编译器有特殊含义,不能作为标识符使用: Java中的true.false.null这三个保留字,不能作为标识符使用,对于编译器有特殊含义: main是一个用于描述Java程序开始方法的特殊名称,它不是一个关键字: abstract 抽象 boolean 逻辑运算: 布尔 break 打破: 断开 byte 字节: case 例,

关于JS脚本语言的基础语法

JS脚本语言的基础语法:输出语法  alert("警告!");  confirm("确定吗?");   prompt("请输入密码");为弱类型语言: 开始时要嵌入JS代码:<script type="text/javascript"></script>: 关于写程序是需注意的基本语法:1.所有的字符全都是英文半角的:2.大部分情况下每条语句结束后要加分号:3.每一块代码结束后加换行:4.程序前呼后应: