OC基础学习第一天

来源:互联网 发布:linux 测试ping 编辑:程序博客网 时间:2024/05/13 13:52

#import <Foundation/Foundation.h>


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

    @autoreleasepool {

        NSLog(@"Hello, World!");

    }

   return 0;

}

1)#import <Foundation/Foundation.h>,告诉编译器找到并处理名为Foundation.h文件,这是一个系统文件,#import表示将该文件的信息导入到程序

2)int main(int argc,const char * argv[]),这个方法是程序的入口。参数argc-参数数目,argv-参数值。

3)@autoreleasepool{ }这是一个自动释放池,用于回收对象的存储空间

4)NSLogFoundation框架提供的Objective-C日志输出函数,与标准C中的printf函数类似,并可以格式化输出。

@“Hello, World!”,是代表NSString字符串对象

5)最后是return0语句,它表示要终止main的执行,一般情况下0代表正常结束,0代表异常情况,这是沿用了C语言的习惯。


面试题

1、为什么要使用importimportinclude的区别?

//include import都是引入头文件

//import引入的头文件,可以防止重复包含

//include需要配合预处理指令才能防止重复包含,如果没有写预处理指令,则无法防止重复包含问题

2import@class的区别?




NSLogprintf使用的差异:

//1NSLog 会自动换行  printf不会自动换行

//2NSLog 会自动输出时间等项目信息,printf不会输出调试信息

//3NSLog 函数参数是一个NSString对象

//         printf接收的是字符串指针变量


NSLogprintf可以混着用吗?

注意:

1)不能使用Printf打印OC中的对象 (%@占位符不能用),没有结果。


NSLog格式化输出

//oc中特有的字符串表示方法

NSString *str =@"hello itcast!";

NSLog(@"string is:%@",str);//使用占位符,%@表示打印一个对象,%@ OC特有的

NSLog(@"this is a test");//打印一个字符串

NSLog(@"x=%d, y=%d",10,20);//使用多个占位符,%d表示整型数



//***********OC中注释及@符号使用*************


1“@”的使用方法OC“@”有特殊的用法

1)@""这个符号表示将一个C的字符串转化为OC中的字符串对象NSString.

2)@标识符 OC中大部分的关键字都是以@开头的,比如@interface,@implementation,@end


2OC中注释 OC中的注释有两种:

1)单行注释://

2)多行注释:/* */

3)文档注释:/** */

/**

 * 狗吃食物的方法

 @class等。

 *

 * @param foodName 参数描述

 */

4)条件编译注释

#if 0

#endif

注意:多行注释不能嵌套



//***************OCC差异学习***********

OCC差异学习()

1、源文件对比

//C语言中,我们遇到不同后缀的文件有哪些?

.c .o .out .h

//OC中常见的文件有两种:

.h.m的文件


OC新增:增强型for循环,可以快速遍历数组、字典等集合

NSArray *arr =@[@"AAAA",@"BBBB",@"CCCC"];

for (NSString *strin arr) {

    NSLog(@"%@",str);

}




函数(方法)定义和声明对比

//C语言中函数的声明和实现

i.函数声明:

int sum(int a,int b);

ii.函数定义

int sum(int a,int b){

   return a+b;

}


//OC语言中函数习惯称之为方法

i.方法声明:

-(int)sum:(int) a andB:(int) b;

ii.方法定义

-(int)sum:(int) a andB:(int )b{

   return a+b;

}


OCC差异学习()

1OC新增的数据类型介绍

1)逻辑型

(1)Boolean

//Boolean 类型指的是用于存储真值和假值的变量,一般用于程序流程控制

//Boolean 类型数据允许取值 true false ,也可以是0或非0的整数替代 true false

(2)BOOL

//用作逻辑判断

BOOL flag =YES;

//flag通常被赋值为YESNO10


2OC中的新增异常捕捉方法

@try .... @catch ....@finally


格式:

@try {

    //此处放的是有可能出错的代码

    < #statements#>

}

@catch (NSException *exception) {

    //捕捉最具体的异常类型 < #handler#>

}

@catch (NSException *ne) {

    //捕获一个比较重要的异常类型。

}

@catch (id ue) {

    //再次掷出捕获的异常。

}

@finally {

    //不管有没有异常finally内的代码都会执行。 < #statements#>

}




//****************面向对象编程的概念****************

面向对象和面向过程的区别:


//面向过程

强调的是功能行为

关注的是解决问题需要哪些步骤

//面向对象

将功能封装进对象,强调具备了功能的对象

关注的是解决问题需要哪些对象


面向对象是基于面向过程的。


1、什么是类?

//某一些具有共同特征和行为的事物的抽象。类是具有相似内部状态和运动规律的实体的集合(或统称、抽象)

2、什么是对象?

//类的实例。


1)类和对象之间的关系

(Class) 一个类由3个部分构成

类的名称:类名

类的属性:一组包含数据的属性

类的方法:允许对属性中包含的数据进行操作的方法

对象(Object)

是系统中的基本运行实体

对象就是类类型(class type)的变量

定义了一个类,就可以创建这个类的多个对象

一个类就是具有相同类型的对象的抽象


//********************类的声明和实现***************


//

.h:类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interface@end

注意:.h中的方法只是做一个声明,并不对方法进行实现。也就是说,只是说明一下方法名、方法的返回值类型、方法接收的参数类型而已,并不会编写方法内部的代码。


.m:类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementation@end


//方法

方法的声明和实现,都必须以 +或者 - 开头

+ 表示类方法(静态方法)

- 表示对象方法(动态方法)

.h中声明的所有方法作用域都是public类型,不能更改


//成员变量(实例变量\属性)

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

@public全局都可以访问

@protected只能在类内部和子类中访问

@private只能在类内部访问



类的定义:

1)类的声明(规定当前类的:类名、属性、行为)

@interface 类名:父类名称

{

    //定义成员变量(类的属性,实例变量)

    

}

    //类的方法(行为,功能)!!!!!!!!

@end


2)类的实现(实现具体行为)

@implementation 类名


    //方法的具体实现(行为、功能、)


@end


//*****************创建一个对象并访问成员变量*************

1、创建一个对象

Car *car1 = [Car new];

//理解方式一:(C)

//定义了一个Car类型的指针变量,指针变量指向新申请的内存空间

//理解方式二:(oc)

//******Car类实例化了一个实例对象,对象的名称是car1


只要是用new操作符定义的实体就在会堆内存中开辟一个新的空间。


*******注意:

[Car new];

在内存中干三件事:

1.开辟存储空间

2.初始化成员变量(写在类声明大括号中的属性就叫成员变量,也叫实例变量)

3.返回指针地址


对象->对象成员(注意声明属性为:@public)的方式操作对象中的成员




//************无参方法声明实现及调用**************


OC中的方法分为:对象方法和类方法:

//对象方法(减号方法、动态方法(因为它分配了内存))

(1)对象方法以-开头如 -(void)xx;

(2)对象方法只能由对象来调用

(3)对象方法中可以访问当前对象的成员变量

(4)调用格式 [对象名对象方法名];


//类方法(加号方法、静态方法)

(1)类方法以+开头+(void)put;

(2)类方法只能由类来调用

(3)类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间来存储类中的成员变量。

(4)调用格式:[类名类方法名];

(5)类方法的好处和适用场合:

    不依赖于对象,执行效率更高;

    能用类方法解决的问题,尽量使用类方法;

    场合:当方法内部不需要使用到成员变量时,可以改为类方法。


//***********1、无参方法声明实现及调用

1)不带参数的方法

声明:

-(void)run;

2、方法的调用

//oc中方法的调用有两种:

1)[类名或者对象名方法名];

Car *car1 =[Car new];

[car1 run]; //car1对象发送了一条调用run方法的消息(消息机制)***************


2)对象名.方法名 (点语法,以后再讲)


//************2、有参方法声明实现及调用

带参数的方法的定义和实现:

-(返回值类型)方法名1:(参数类型)参数名;   //有一个参数的方法

-(返回值类型)方法名1:(参数类型1)参数名1  and:(参数类型2)参数名2;  //2个参数的方法


方法的声明

-(int)sum:(int) x and:(int) y;

//有参方法的使用注意:

// 方法的类型  -)对象方法

// 方法的返回值: int类型

// 方法的参数是: x   y

// 参数的类型: 第一个 int  第二个 int

// 方法名:  sum:   and:  (冒号是方法名的一部分)


方法的实现

-(int)sum:(int) x and:(int) y{


   return x+y;

}


0 0
原创粉丝点击