OC-类

1、关于头文件
  #include <stdio.h>    
  #import <Foundation/Foundation.h>

  区别:#import指令导入更快更有效率。#include指令告诉编译器做呆板的复制粘贴,将包含的内容粘贴到目标文件中来。而#import则会先检查之前是否已经导入过这个文件或是已经包含到目标文件中了。

  再仔细观察两个头文件名
  Foundation.h我们称之为主头文件, 主头文件中又拷贝了该工具箱中所有工具的头文件, 我们只需要导入主头文件就可以使用该工具箱中所有的工具, 避免了每次使用都要导入一个对应的头文件。
  规律: 所有的主头文件的名称都和工具箱的名称一致
          所有的主头文件都是导入了该工具箱中所有工具的头文件

2、第一个oc程序

 1 /*
 2  因为OC完全兼容C, 所以可以在OC程序中编写C语言代码
 3  并且可以将C语言的源文件和OC的源文件组合在一起生成可执行文件
 4  */
 5 #import <Foundation/Foundation.h>
 6 int main(int argc, const char * argv[]) {
 7     printf("c hello world\n");
 8     /*
 9      printf和NSLog的区别:
10      NSLog会自动换行
11      NSLog在输出内容时会附加一些系统信息
12      NSLog和printf接收的参数不一样
13      */
14     NSLog(@"OC hello World");
15
16     return 0;
17 }

3、oc类

  C语言中函数分为声明和实现,OC中定义一个类也分为声明和实现

  1)类声明

// 以@interface开头 , 以@end结尾, 然后再class name对应的地方写上 事物名称, 也就是类名即可
// 声明一个类的目的就是为了告诉系统, 我们这个类中有哪些属性和行为
// OC类声明中属性只能在写@interface和@end之间的{}中
@interface Person : NSObject
{
    //注意: 默认情况下, OC对象中的属性是不能直接访问的
    int _height; // 注意: 编写OC类属性的时, 建议将所有属性的名称前面都加上_
    int _weight;
    int _age;
}

// 行为
@end
       

  2)类实现

// 以@implementation开头, 以@end结尾, 然后在class对应的地方写上声明时声明的类的名称, 须和声明的类名相同
@implementation Person

// 行为的实现

@end

  3) 方法的声明和实现

@interface Person : NSObject
{
   //此处代码省略
}
// 行为
/*
 OC中的行为和C语言中的函数一样, 都是用来保存一段特定功能的代码
 C语言中定义一个函数, 分为声明和实现, 声明写在.h中, 实现写在.c中
 OC中定义一个方法, 也分为声明和实现, 声明写在@interface中, 实现写在@implementation

 C语言的函数分为两种: 内部函数和外部函数
 OC中的方法也分为两种; 类方法和对象方法
 类方法只能用类名调用, 对象方法只能用对象调用
 OC中的类方法用+表示, OC中的对象方法用-表示

  编写OC方法的规律和C语言一模一样: 1.确定函数名称 2.确定形参 3.确定返回值 4.确定返回值类型
*/
// 注意: OC中的方法, 如果没有形参不需要写(), 而是直接写一个;OC方法中的()是放数据类型的

- (void)about;

@end

// 类的实现
@implementation Person
// 行为的实现
- (void)about
{
    NSLog(@"此人信息");
}
@end

  

  4)main函数

int main(int argc, const char * argv[]) {
    // 在OC中想要通过一个类来创建一个对象, 必须给类发送一个消息
    // 发送消息的语法是  [类名称/对象名称 方法名称];
       /*
     只要通过一个类调用类的new方法, 也就是给类发送一个叫做new的消息之后
    系统创建对象的过程如下
     1. 为Person类创建出来得对象分配存储空间
     2. 初始化Person类创建出来的对象中的属性
     3. 返回Person类创建出来的对象对应的地址
        */
    // 通过一个Person类型的指针接收了 Person对象的地址
    // 利用Person类型的指针保存了Person对象的地址, 那么我们就称Person类型的指针p之为Person对象
    // OC中的类其实本质就是一个结构体, 所以p这个指针其实就是指向了一个结构体
   Person *p = [Person new];
    //  p->_height= 70;  c语言中我们可以这样做,但是在oc中不允许直接访问成员变量,  

[p  about]; //调用对象方法

    return 0;
}

  最后说一下Objective-C命名规则

  指向实例的变量使用"骆驼拼写法(camel case)"来命名。以小写字母开头,接下来每个单词的第一个字母使用大写。

  方法的命名也是用骆驼拼写法。

  类的名称以大写字母开头,但是接下来的单词继续使用骆驼拼写法。

时间: 2024-12-23 03:32:49

OC-类的相关文章

《黑吗程序员》OC的认识和第一个OC类

面向对象和面向过程的区别 ① oc是面向对象 ② c是面向过程 ③  面向对象和面向过成只不过是解决问题的两种不同的思路 ④  面向过程只不过是考虑问题解决的步骤,面向对象只不过是考虑解决问题需要的对象. OC 类的认识      类的设计必须关心三样事物: ① 类名 ② 属性 ③ 行为 类名:所有的名词都是类名,且类名的第一个字母必须大写. 如果类名有多个名词,要使用驼峰标示. 属性:代表这个类在创建出来所拥有的的属性. 行为: 这个类所拥有的功能. 类的创建 // 类的声明 @interfa

OC类的继承以及类的循环调用

一, 关于OC的实例变量的可见度,即实例变量的访问权限有三种: 1),@public           公有的 被@public修饰的实例变量是公共的,即没有访问权限,在任何文件中都可以访问,(访问方式是通过对象+指向操作符) 2),@protected    受保护的 被@protected修饰的实例变量有一定的访问限,只允许在本类文件及子类文件中访问,其他文件不可访问 3),@private         私有的 被@private 修饰的实例变量,只允在在本类文件中访问,不可以在子类文

OC类的声明和实现,书写容易犯的错误

oc类的声明和实现,书写时候,容易犯的错误主要包括以下几点: 1.只写声明,不写实现 2.将@end这个结束标记忘记了 3.类的声明或者实现都不能写在c的函数中 4.属性的声明必须写在大括号当中 5.在声明属性的时候,不能直接赋值 6.声明与实现不能嵌套 7.方法的声明,只能写在大括号的下面,@end上面 8. '-[Person run]: unrecognized selector sent to instance 0x100109c80'  经典错误(记住),就是对象没有找到run这个方法

OC面向对象之第一个OC类

在学过java.c++这样语言之后,再来学习OC语言,虽然也同样是面向对象的语言,但是OC语言仍然给我们一种很"怪异"的感觉.这主要是由于OC语言本身有着它独特的命名和使用方法.总结java语法和OC语法的使用,我们会发现其实还是有很多规律可循的.下面就总结了OC类的一些特性. 一.关于OC类 1.oc中一般用两个文件描述一个类,与java是不同的. 2.后缀.h文件是类的声明文件,用于声明成员变量.方法.使用关键字@interface和@end; 而且.h文件只作声明,并没有对类的方

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

01第一个OC 类 本文目录 • 一.语法简介 • 二.用Xcode创建第一个OC的类 • 三.第一个类的代码解析 • 四.添加成员变量 • 五.添加方法 • 六.跟Java的比较 • 七.创建对象 • 八.访问公共成员变量和方法说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C.如果你还没有编程经验,或者对Objective-C.iOS开发不感兴趣,请忽略.学习本专题之前,建议先学习C语言专题.OC是一门面向

OC类与对象实例化,类之间的方法调用小题目

两个OC类与对象实例化题目 要求: * 类名.属性名.属性类型.方法名.方法参数.方法返回值自拟 * 自己写main函数测试设计是否合理 /* 1.设计一个"狗"类 1> 属性 * 颜色 * 速度(单位是m/s) * 性别 * 体重(单位是kg) 2> 行为 * 吃:每吃一次,体重增加0.5kg,输出吃完后的体重 * 吠(叫):输出所有的属性 * 跑:每跑一次,体重减少0.5kg,输出速度和跑完后的体重 * 比较颜色:跟别的狗比较颜色,如果一样,返回YES,不一样,返回NO

oc类的功能的拓展与延展

类的扩展 一   类目 (类目也称为分类,为没有源码的类添加方法.) 1.作用 1)可以扩展别人的类,可以作为子类的替代方法. 2)把同一类的代码放到多个文件中. 2.形式 1)文件名:目标类+类目名.h 目标类+类目名.m 2).h文件中 @interface 需要扩展的类的类名(分类名) -( )method: @end eg: 为字符串添加一个类 NSString+SayHi.h @interface NSString (SayHi) -(void)sayHi;//为字符串添加方法 @en

OC类的设计

//Objective-C面向对象的C语言. //OC完全兼容C,凡是C语言代码可以直接编译在OC的工程当中. [面向过程的语言]都是祈使句,直接和CPU沟通.目的是操作CPU,储存数据,管理数据. //数学逻辑,就像小学解应用题,关注的是数据和管理数据. [面向对象的语言]在程序中,添加能够接收消息的单元(对象),每个单元拥有自己的功能,各单元合作,完成程序. //应用程序都是用(面向对象的语言编程)(OOP)的 //面向对象没有具体的官方定义.早期只使用[继承][封装][多态]编写程序的思想

[Objective-C]简单实现一个OC类

一.语法规范 1.类:抽象的描述一件事物,比如将人.狗和猫抽象成动物类 在OC中用两个文件来描述一个类 1> .h:类的声明文件,用于声明成员变量和方法,类的声明代码在关键字@interface和@end之间: 2> .m:类的实现文件,用于实现.h文件中的方法,类的声明代码在关键字@implementation和@end之间: 注意:.h文件中的方法只参加声明,不参加实现:也就是说,只说明方法类型.方法返回值类型.方法名.方法参数类型,不编写方法内部代码 2.方法: 1> 方法的分类

【IOS学习基础】OC类的相关

几天前突然在别人的类的.m文件中看到这么一句代码:@synthesize xxxx = _xxxx; 当时愣是没理解啥意思,过后才缓过神来发现原来是把一些类的基础知识忘记了,虽然不用过多去深究以前的一些旧东西,但但是既然遇到了,还是复习一下. 一.类与对象 1.类:类是定义同一类所有属性和方法的蓝图或原型. 2.对象:用来描述客观事物的一个实体,由具体的属性和方法构成. 3.类与对象的关系:类是用来制作无数实体(对象)的工程图纸. 4.类的特征:属性 5.类的行为:方法 二.封装 1.类就是封装