OC基础学习第一天

#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)最后是return 0语句,它表示要终止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 *str in 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值