OC语言概述

1.OC语言概述

1>Foundation.h我们称之为主头文件, 主头文件中又拷贝了该工具箱中所有工具的头文件, 我们只需要导入主头文件就可以使用该工具箱中所有的工具, 避免了每次使用都要导入一个对应的头文件

工具箱的地址: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks

规律: 所有的主头文件的名称都和工具箱的名称一致

所有的主头文件都是导入了该工具箱中所有工具的头文件

2>import和include的区别:

import 的功能和 include一样, 是将右边的文件拷贝到当前import的位置

为了降低程序员的负担, 防止重复导入, 避免程序员去书写头文件, 那么OC给出来一个新的预处理指令import

import优点: 会自动防止重复拷贝

因为OC完全兼容C, 所以可以在OC程序中编写C语言代码

并且可以将C语言的源文件和OC的源文件组合在一起生成可执行文件

3>printf和NSLog的区别:

NSLog会自动换行

NSLog在输出内容时会附加一些系统信息

NSLog和printf接收的参数不一样

2.第一个OC类

OC中要定义一个类也分声明和实现,也就是说以后我们在OC中定义类,就是在写类的声明和实现

1>如何编写类的声明

以@interface开头,@end结尾,然后再class name对应的地方写上 事物名称,也就是类名即可

注意:类名的首字母必须大写

声明一个类的目的就是为了告诉系统,我们这个类中有哪些属性和行为

事物名称: iPhone

属性: 颜色, 型号, cpu, 尺寸   == 成员变量

行为:打电话, 发短信, 上网, 获取本机信息    == 成员方法

OC类声明中属性只能写在@interface和@end之间的{}中

例如:

@interface Iphone : NSObject

{

@public

float _model; // 型号  0

int _cpu; // cup   0

double _size; // 尺寸  0

int _color; // 颜色  0

}

注意:编写0C类的属性的时候,建议将所有属性的名称前面都加上 _(原因再后边会讲到,就是getter和seter中名字问题).

类名后边的 :NSObject是为了让我们的类具备创建对象的能力,也是类的一个父父类.

注意:默认情况下,OC类中的属性是不能直接访问的,这就是后边讲到的protected修饰符

只要让类中的属性公开,以后就可以直接通过一个指向结构体的指针来操作对象中的属性

n(int argc, const char * argv[]) {

2>如何通过一个类来创建对象

在OC中想要通过一个类来创建一个对象, 必须给类发送一个消息(好比C语言中调用函数一样)

如何发送消息?

在OC中只要想要发送消息就先写上 [类名称/对象名称 方法名称];

发送什么消息(调用什么方法)可以创建一个对象呢?

new

只要通过一个类调用类的new方法, 也就是给类发送一个叫做new的消息之后

系统内部就会做3件事情

1. 为Iphone类创建出来得对象分配存储空间

2. 初始化Iphone类创建出来的对象中的属性

3. 返回Iphone类创建出来的对象对应的地址

通过一个Iphone类型的指针接收了 Iphone对象的地址

如果使用给一个指针保存了某一个对象的地址, 那么我们就称这个指针位之为某个类型的对象

利用Iphone类型的指针保存了Iphone对象的地址, 那么我们就称Iphone类型的指针p之为Iphone对象

OC中的类其实本质就是一个结构体, 所以p这个指针其实就是指向了一个结构体

3>函数和类中行为的区别

OC中的行为和C语言中的函数一样, 都是用来保存一段特定功能的代码

C语言中定义一个函数, 分为声明和实现, 声明写在.h中, 实现写在.c中

OC中定义一个方法, 也分为声明和实现, 声明写在@interface中, 实现写在@implementation

C语言的函数分为两种: 内部函数和外部函数

OC中的方法也分为两种; 类方法和对象方法

类方法只能用类名调用, 对象方法只能用对象调用

OC中的类方法用+表示, OC中的对象方法用-表示

编写C语言函数的规律: 1.确定函数名称 2.确定形参 3.确定返回值 4.确定返回值类型

编写OC方法也有规律, 规律和C语言一模一样

()的作用:

注意: OC中的方法, 如果没有形参不需要写(), 而是直接写一个;

为什么OC中没有形参不需要写()呢? 因为OC方法中的()有特殊的用途, OC方法中的()是用来扩住数据类型的

4>C语言的函数:

没有返回值没有参数的

有返回值没有参数的

有返回值有参数的

没有返回值有参数的

有返回值没有参数的, 读取短信

- (char *)loadMessage;

有返回值有参数的, 打电话

int signal(int number);

注意: OC中的方法如果有参数, 那么每个参数的数据类型前面必须加上一个:

注意: 当前这个有参数的方法它的方法名称是  signal:

冒号也是方法名称的一部分

- (int)signal:(int)number;

有返回值并且有多个参数的, 发短信

int sendMessage(int number, char *content);

下面这个方法的方法名称是 sendMessage::

- (int)sendMessage:(int)number :(char *)content;

为了提高我们的阅读性, OC方法允许我们给每个参数添加一个标签来说明当前参数的含义

注意: 标签也是方法名的一部分

[对象 消息名称(方法名称)]

注意: OC中的NSLog对C语言的字符串支持不是很好, 如果返回的是中文的C语言字符串可能输出的是乱码, 也有可能什么都不输出

如果定义类方法, 类方法的写法和对象方法一模一样, 除了前面的-号不同以外 ,只需要将对象方法的-号换成+, 那么就定义了一个类方法

5>类方法和对象方法的区别

0. 对象方法以-开头

类方法以+开头

1. 对象方法必须用对象调用

类方法必须用类来调用

2. 对象方法中可以直接访问属性(成员变量)

类方法中不可以直接访问属性(成员变量)

3. 类方法和对象方法可以进行相互调用

4.1对象方法中可以直接调用类方法

4.2类方法中间接调用对象方法  (注意: 不建议这样使用)

4.3类方法中可以直接调用其它类方法

4.4对象方法中可以直接调用对象方法

类方法的应用场景

如果方法中没有使用到属性(成员变量), 那么能用类方法就用类方法

类方法的执行效率比对象方法高

类方法一般用于定义工具方法

字符串查找

文件操作

数据库操作

6>isa

创建对象的时候返回的地址其实就是类的第0个属性的地址

但是需要注意的是: 类的第0个属性并不是我们编写的_age, 而是一个叫做isa的属性

isa是一个指针, 占8个字节

其实类也是一个对象, 也就意味着Person也是一个对象

平时我们所说的创建对象其实就是通过一个 类对象 来创建一个 新的对象

类对象是系统自动帮我们创建的, 里面保存了当前对象的所有方法

而实例对象是程序自己手动通过new来创建的, 而实例对象中有一个isa指针就指向了创建它的那个类对象

时间: 2024-08-08 16:17:32

OC语言概述的相关文章

C语言概述

[C语言]C语言概述 本文文件夹 为什么iOS开发要先学C语言? 一.C语言简史 二.C语言的特点 三.C语言能做什么? 四.C语言的版本号问题 说明:这个C语言专题,是学习iOS开发的前奏. 也为了让有面向对象语言开发经验的程序猿,可以高速上手C语言.假设你还没有编程经验,或者对C语言.iOS开发不感兴趣.请忽略 为什么iOS开发要先学C语言? iOS开发的核心语言是Objective-C,Objective-C是在C语言的基础加了一层面向对象的语法. 为了能够更好地掌握Objective-C

1-学习前言&C语言概述

[C语言]01-学习前言&C语言概述 参考自 http://www.cnblogs.com/mjios/archive/2013/03/12/2956508.html#label2 C语言是我去年学的,学的还好吧,但是过了一个假期,感觉很多东西都忘了,说实说,我无法接受这个事实!这多少与去年没有接解一些网络笔记OneNote还有博客有关系,所以我决定花1~2个星期系统的复习整理一下. ----2016/11/5 一.C语言的特点 1.丰富的运算符 计算机的基本功能就是计算,因此一门程序设计语言的

人生三分之一埋在土里的时候,选择了学习OC语言 1 类和对象

人生三分之一埋在土里的时候,选择了学习OC语言  1 类和对象 今天开始整理我所理解的东西,希望能够帮助一些像我一样想要学习一门计算机语言的朋友们, 可能在很多的地方理解的也不够深入,有不对的地方还希望关注的朋友能够谅解,也多多提您的宝贵意见! 学习前需要具备的条件: 首先你要有C语言的一些基础,如果你没有,那可以先去自学一下C语言, 我是通过以下网站进行学习的,也希望对你能够有帮助! http://c.biancheng.net/cpp/u/jiaocheng/ 其次,你要有一台mac电脑,

OC语言基础知识

OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO面向对象.OOP面向对象编程 二.类 (一)关于类 类的设计只关注三个东西:类名.属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识.在对方法进行类的

oc语言复制视频文件

1 void copyFile() 2 { 3 NSString *home=NSHomeDirectory(); 4 NSString *path=[NSString stringWithFormat:@"%@/desktop/oc.mp4",home]; 5 NSString *path1=[NSString stringWithFormat:@"%@/desktop/oc1.mp4",home]; 6 NSFileHandle *handle=[NSFileH

java语言概述

a语言概述  Java之父是谁?你造吗?  常见的JDK版本:  JDK1.4.2  JDK5  JDK7 (2)Java语言的特点  有很多小特点,重点有两个开源,跨平台 (3)Java语言是跨平台的  针对不同的操作系统,依靠不同的jvm来实现的. (4)Java语言的平台se,me,ee b:JDK,JRE,JVM的作用及关系(掌握) (1)作用  JVM:保证Java语言跨平台  JRE:Java程序的运行环境  JDK:Java程序的开发环境 (2)关系  JDK:JRE+工具  JR

李洪强iOS开发之OC语言基础知识

OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO面向对象.OOP面向对象编程   二.类 (一)关于类 类的设计只关注三个东西:类名.属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识.在对方法进行

黑马程序员——OC语言继承与多态

一)继承基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量). 在这里动物是猫类和狗类的父类,黑猫和白猫类是猫类的子类. >>继承的好处: (1)抽取出了重复的代码 (2)建立了类和类之间的联系 >>继承的缺点: 耦合性太强 二)继承格式 @interface Animal:NSObject //动物里继承了NSObject,获得NSObject类的方法: @e

第一章:C语言概述及如何上机运行C程序

第一章:C语言概述及如何上机运行C程序 让编程改变世界 Change the world by program C语言概述 C语言的发展过程 C语言是在 70 年代初问世的.一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言.同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书.通常简称为<K&R>,也有人称之为<K&R>标准.但是,在<K&R>中