OC是一门面向对象的语言,因此它也有类、对象、静态\动态方法、成员变量的概念。这讲就来创建第一个OC的类。

第一个类的源码:

  1. /*

  2. 类名:Person
  3. 属性(成员变量\实例变量):体重、年龄
  4. 行为(方法):走路、吃
  5. */
  6.  
  7. #import <Foundation/Foundation.h>
  8.  
  9. //1.类的声明
  10. @interface Person : NSObject
  11. {
  12. @public
  13. int age;
  14. double weight;
  15. }
  16.  
  17. - (void) walk;
  18. - (void) eat;
  19. @end
  20.  
  21. // 2.类的实现
  22. @implementation Person
  23. // 实现interface中声明的方法
  24. - (void) walk {
  25. NSLog(@"%d岁、%.2lf公斤的人走一段路", age, weight);
  26. }
  27.  
  28. - (void) eat {
  29. NSLog(@"%d岁、%.2lf公斤的人在吃东西", age, weight);
  30. }
  31. @end
  32.  
  33. int main() {
  34. // 在使用类创建对象之前,会将类加载进内存
  35. Person *p = [Person new];
  36. p->age = ;
  37. p->weight = 77.0;
  38.  
  39. [p eat];
  40. [p walk];
  41. return ;
  42. }

1.类的声明(代码11-20行):声明对象的属性和行为

  1. 10   //1.类的声明
  2. 11   @interface Person : NSObject
  3. 12   {
  4. 13   @public
  5. 14   int age;
  6. 15   double weight;
  7. 16   }
  8. 17
  9. 18   - (void) walk;
  10. 19   - (void) eat;
  11. 20   @end

  代码第11行 : NSObject 目的是:让Car这个类具备创建对象的能力

  代码第12-16行 用来声明对象属性(实例变量/成员变量,默认会初始化为0)

    声明对象属性必须在 {...} 之间

    @public让后面所有变量都可以被外部的指针间接访问对象内部的成员变量  

      成员变量的常用作用域有3种:

      1> @public 全局都可以访问
      2> @protected 只能在类内部和子类中访问
      3> @private 只能在类内部访问

  代码18、19行 是方法的声明

    方法(行为):方法名、参数、返回值(声明、实现)

      只要是OC对象的方法,必须以减号 - 开头
      OC方法中任何数据类型都必须用小括号 (...) 括住
      OC方法中的小括号():括住数据类型

2、类的实现(代码23-32行):用来实现@interface中声明的方法

  1. 22 // 2.类的实现
  2. 23 @implementation Person
  3. 24 // 实现interface中声明的方法
  4. 25 - (void) walk {
  5. 26 NSLog(@"%d岁、%.2lf公斤的人走一段路", age, weight);
  6. 27 }
  7. 28
  8. 29 - (void) eat {
  9. 30 NSLog(@"%d岁、%.2lf公斤的人在吃东西", age, weight);
  10. 31 }
  11. 32 @end

  方法的声明请参考 视频iOS之04方法的声明和实现

3、主函数(代码34-43行)

  1. 34 int main() {
  2. 35 // 在使用类创建对象之前,会将类加载进内存
  3. 36 Person *p = [Person new];
  4. 37 p->age = 20;
  5. 38 p->weight = 77.0;
  6. 39
  7. 40 [p eat];
  8. 41 [p walk];
  9. 42 return 0;
  10. 43 }

  在OC中想执行一些行为,就写上一个中括号[行为执行者 行为名称]

  代码36行 利用类来创建对象

    执行了Car这个类的new行为来创建新对象

    定义了一个指针变量p,p将来指向的是Car类型对象

    [Car new]每次都会创建出一个新对象,并且会返回新对象本身(新对象的地址)

  代码37、38行 给p所指向对象的属性赋值

  代码37、38行 给p所指向对象发送一条run信息

  每个对象中都有一个isa的指针,这个指针就指向对象所对应的类

4、OC对象方法和函数的区别

  方法
   1> 对象方法都是以减号'-'开头
   2> 对象方法的声明必须写在@interface和@end之间
     对象方法的实现必须写在@implementation和@end
   3> 对象方法只能由对象调用
   4> 对象方法归对象所有
 
  函数
   1> 函数能写在文件中的任意位置(除了在对象声明部分(@interface和@end之间)),函数归文件所有
   2> 函数调用不依赖于对象
   3> 函数内部不能直接通过成员变量访问某个对象的成员变量

iOS之02-第一个OC的类的更多相关文章

  1. 第一个OC的类

    来源:http://www.cnblogs.com/mjios/archive/2013/04/06/3002814.html 本文目录 一.语法简介 二.用Xcode创建第一个OC的类 三.第一个类 ...

  2. 【Objective-C】0-第一个OC的类

    OC是一门面向对象的语言,因此它也有类.对象.静态\动态方法.成员变量的概念.这讲就来创建第一个OC的类. 一.语法简介 1.类 在Java中,我们用1个.java文件就可以描述清楚一个类:在OC中, ...

  3. 【Objective-C】05-第一个OC的类

    OC是一门面向对象的语言,因此它也有类.对象.静态\动态方法.成员变量的概念.这讲就来创建第一个OC的类. 一.语法简介 1.类 在Java中,我们用1个.java文件就可以描述清楚一个类:在OC中, ...

  4. 02第一个OC程序

    一.打开XCode4.6.3,新建项目 二.选择Application下的命名行项目 三.输入项目名称,选择Foundation框架创建项目,点击Next 四.二话不说.点击Run.启动我们创建的项目 ...

  5. IOS开发——01_第一个OC程序

    本文目录 一.新建Xcode项目 二.运行项目 注:建议先学习C语言, 如果你还没有编程经验,看不懂的地方可以在评论区提出,本文使用的为Xcode6.1版本,与之前版本会有所差异,但总体不变. 另:还 ...

  6. 05_传智播客iOS视频教程_第一个OC程序

    Cocoa Application开发的是带界面的程序. OC是完全兼容C语言的,但是C语言里面是不能写OC的东西的. OC和C的第一个区别,就是源文件的后缀名的区别.OC程序的源文件的后缀名是.m, ...

  7. 第一个OC类、解析第一个OC程序

    01第一个OC 类 本文目录 • 一.语法简介 • 二.用Xcode创建第一个OC的类 • 三.第一个类的代码解析 • 四.添加成员变量 • 五.添加方法 • 六.跟Java的比较 • 七.创建对象 ...

  8. ios开发之OC基础-类和对象

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  9. 李洪强iOS开发之OC语言类的深入和分类

    OC语言类的深入和分类 一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件 ...

随机推荐

  1. Swift - 获取、改变按钮的标题文本(UIButton点击切换title)

    在开发中,我们常常需要动态地改变按钮标签文字,使用 setTitle() 函数就可以了.有时我们需要在几个标题间切换,比如下面样例所示,按钮点击后按钮文字会在"播放""暂 ...

  2. 第二课 less的学习以及移动端需要注意的问题

    一.LESS的学习笔记: 1.less介绍:一种动态样式语言.less将css赋予了动态语言的特性,如变量,继承,运算,函数,less既可以在客户端上运行(支持IE6+,webkit,firefox) ...

  3. sql server 的cpu使用率过高的分析

    有哪些SQL语句会导致CPU过高? 1.编译和重编译 编译是 Sql Server 为指令生成执行计划的过程.Sql Server 要分析指令要做的事情,分析它所要访问的表格结构,也就是生成执行计划的 ...

  4. Linux下多窗口分屏式终端--Terminator

    很不错的分屏插件终端:https://pkgs.org/centos-6/repoforge-i386/terminator-0.95-3.el6.rf.noarch.rpm.html

  5. git 使用技巧

    让git不检测文件权限 在android根目录执行:repo forall -c git config core.filemode false即可 修改默认编辑器: git config –globa ...

  6. eclipse中的任务标记(TODO、FIXME、XXX)

    eclipse Task Tags: TODO -用来提醒该标识处的代码有待返回继续编写.更新或者添加.该标签通常在注释块的源文件顶部. FIXME -该标签用来提醒你代码中存在稍后某个时间需要修改的 ...

  7. 【Java EE 学习 20】【使用过滤器实现登陆验证、权限认证】【观察者模式和监听器(使用监听器实现统计在线IP、登录IP 、踢人功能)】

    一.使用过滤器实现登录验证.权限认证 1.创建5张表 /*使用过滤器实现权限过滤功能*/ /**创建数据库*/ DROP DATABASE day20; CREATE DATABASE day20; ...

  8. linux 下解压rar文件

    今天遇到要在linux 服务器上解压几个rar 文件的问题,rar似乎是win 专属的压缩格式,所以linux 原生工具链中并没有支持rar 解压的工具.经过一系列搜索确定了一个脚linuxrar 的 ...

  9. Bootstrap看厌了?试试Metro UI CSS吧

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:Bootstrap作为一款超级流行的前端框架,已经成为很多人的首选,不过有时未免有点审 ...

  10. PMP 第十二章 项目采购管理

    1规划采购 2实施采购 3管理采购 4结束采购 1.合同的不同叫法?卖方的不同叫法? 2.规划采购管理的目的是什么?合同类型有哪些?不同的特点是什么?何种情况下应选择何种合同?自制或外购分析计算和合同 ...