黑马程序员——OC语言学习——第一天

本文介绍了Objective-C作为iOS和OS X开发的主要编程语言,强调了它与C语言的兼容性和面向对象特性。讲解了#import与#include的区别,OC中的字符串、NSLog函数以及BOOL类型。还涉及了类的声明和实现,以及对象的创建和方法调用的基本概念。
摘要由CSDN通过智能技术生成

————————Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ————————


Objective-C的是编写  OS X和iOS软件 的主编程语言。一般将OC看成是C编程语言的一个超集。 Objective-C继承了C语言的语法,基本数据类型和程序控制流程,并在此基础上增加了语法定义的类和方法,并提供面向对象的功能和动态运行。所有它对C语言是完全兼容的。

    在C语言中我们使用一些系统自带的函数需要用 #include<头文件> 包含头文件,在OC中也是一样,只不过在OC中我们使用#import。

    #import和#include一样:<> : <系统文件>  、 ""  :  " 自己写的文件"

    #import 和 #include一样都有拷贝文件内容的作用,只不过增加一个功能,就是防止文件内容重复拷贝。也就在声明文件中不需要再写预处理指令 -->条件编译了,

在C语言中我们预防文件重复拷贝是通过

# ifndef  宏定义

# define 宏定义

文件内容

#endif


OC中的字符串是这种新式: @“OC字符串”, 比C语言多个@

OC中输出语句则变成 NSLog

NSLog比print有个新功能就是会在结束时自动换行

NSLog是系统自带函数需要调用系统文件则要包括头文件:Foundation/NSObjeCRuntime.h文件

NSObjeCRuntime.h中包含NSLog函数的声明,它也是属于Foundation框架的。

Foundation框架的头文件路径是:Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework


我们在上述路径中回看到很头文件,如果一个个包含会非常麻烦,这时就利用到我们的主头文件。Foundation.h 它包含了Foundation框架中的所有头文件

下次我们在写头文件包含只需要 #import <Foundation/Foundation.h>


我们在终端调试OC时,用的命令行和C语言也不一样,

编译:  cc -c

链接: cc 文件名 -framework Foundation    编译链接一起来,也是cc 文件名 -framework Foundation

运行: ./a.out


第二个OC程序

<span style="font-size:14px;">#import <Foundation/Foundation.h>

int main()
{
    // NSLog输出内容会自动换行
    NSLog(@"第2个OC程序!!!");
    
    return 0;
}</span>

OC也可以像C语言一样文件包含。多个文件一起编译。


OC中的BOOL类型 YES ==1  NO ==0

  BOOL类型的本质

typedef signedchar BOOL;

   BOOL类型的变量有2种取值:YES、NO

#define YES (BOOL)1

#define NO  (BOOL)0

   BOOL的输出(当做整数来用)

NSLog(@"%d\n%d",YES,NO);


OC是作为一个面向对象的语言。

面对对象思想:就像是简单的创造一个“生命”,你赋予他属性和行为,如果要利用他的行为,就可以直接调用他来完成你所要完成的行为,其中他的属性可以被你改变。

万物皆是对象,将事物的共性抽象成为类

用类来创建对象,所以我们要先学会创建类


第一个类

1.类的设计:包含类的,名字,属性,功能。

-->类名

*类名的第一个字母必须是大写

*不能有下划线

*多个英文单词,用驼峰标识


类分为两个部分,和写一个函数一样,需要声明和实现两个部分。

1、类的声明

包括:类的属性,类的行为、功能的声明

格式:

@interface 类名 :父类

@end

2、类的实现

就是将声明里的方法、功能,写出来。

格式:

@implementation 类名

@end


例子:写一个车类

类名:Car

属性:轮胎个数,时速(速度)

行为:跑

<span style="font-size:14px;">// 1.类的声明
// 声明对象的属性、行为
// : NSObject 目的是:让Car这个类具备创建对象的能力
@interface Car : NSObject
{// 用来声明对象属性(实例变量\成员变量,默认会初始化为0)
    // @public可以让外部的指针间接访问对象内部的成员变量
    @public
    int wheels; // 轮胎个数
    int speed; // 时速(xxkm/h)
}

// 方法(行为):方法名、参数、返回值(声明、实现)
// 只要是OC对象的方法,必须以减号 - 开头
// OC方法中任何数据类型都必须用小括号()扩住
// OC方法中的小括号():括住数据类型
- (void)run;

@end

// 2.类的实现
// 用来实现@inteface中声明的方法
@implementation Car
// 方法的实现(说清楚方法里面有什么代码)

- (void)run
{
    NSLog(@"车子跑起来了");
}

@end</span>


对象的创建:在OC中我们利用类来创建对象

现在我们用上面写好的Car类创建一个Car对象 : [Car new]

[Car new] 每次都会创建一个新的对象,并且放回新对象本身

在OC中我们用指向对象的指针来存储对象: Car *p = [Car new];


如何给对象的属性赋值

这有点像C语言的结构体

比如调用给Car对象的速度属性赋值:p-->speed = 30;


OC中调用对象行为

格式:[行为执行者 行为名称];

比如调用Car跑的行为:[p run];


类和对象的内存结构图

这是一个人类。创建了两个人对象,分别用p,和p2两个指针指向两个人对象。用人类创建出来的对象里面都有一个isa指针。来指向类。在这里就是人类。

我们创建的对象中只存储属性,不存储方法,在调用方法的时候回到类中调用。


对象方法和函数注意点

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


没有指针指向的对象叫匿名对象,最好别写。后面内存管理会说。






————————Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值