obeject-c语言简介、基础语法
来源:互联网 发布:一拳超人King知乎 编辑:程序博客网 时间:2024/06/07 02:40
enhancedC:加强C,C++
extends C:拓展C,object-c
object-c:在C语言的基础上增加一层最小的面向对象的语法
OC向下兼容C
面试题1:为什么要使用import?import和include的区别?
include和import都是引入头文件,而import引入头文件可以防止重复包含
include它是使用预处理指令防止重复包含,如果没有写预处理指令,则无法防止重复包含
面试题2:import 和 @class的区别
面试题3:Foundation/Foundation.h的作用
1)头文件
2)头文件的位置 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h
3)文件包含了其他的大量头文件
作用:把Foundation.h引入了,等于把OC的库文件都引过来
@autoreleasepool:自动释放池
NSLog函数
NSLog:是Cocoa框架提供的一个方法
面试题:NSLog和printf的差异
1、NSLog会自动换行,而printf不会自动换行
2、NSLog会自动输出时间等项目信息
3、NSLog函数的参数是一个NSString对象,而printf函数的参数是一个字符串常量指针
4、NSLog不能使用%s输出字符串,OC有特有的字符串类NSString
NS前缀:Next Software,防止命名重复
@:1、@“” 表示将字符串转换为NSString对象
2、@标识符 关键字
C与OC的对比
1、源文件对比
1)C语言:.c .o .out .h
2)OC:.m .h
2、基本语法对比
1)C中常用数据类型:基本数据类型,构造类型,指针类型,空类型,定义类型typedef
2)OC中的数据类型:兼容C基本数据类型(布尔型BOOL),Block类型,指针数据类型(类(class),id类型(万能指针)),特殊类型(SEL、nil)
3、变量定义的差异
关键字:1、C语言的关键字都可以在OC中使用
2、OC中新增的关键字,注意以@开头的
4、流程控制语句对比
1)if else
2)switch
3)while
4)do while
5)for
OC中并没有增加新的流程控制,而是提供了一种增强型的for循环
//增强型for循环
NSArray *arr = @[@"one",@"two",@"three"];
for (NSString *str in arr) {
NSLog(@"%@", str);
NSArray *arr = @[@"one",@"two",@"three"];
for (NSString *str in arr) {
NSLog(@"%@", str);
}
5、函数的定义和声明差异
1)C语言
2)OC中把函数称之为方法
6、异常捕捉的方法@try...@catch...@finally
1)并不能检测所有的错误
编程的实质:将我们的思维转变成计算机能够识别的语言的一个过程
面向过程:强调的是功能行为,关注的是解决问题需要哪些步骤。
面对对象:将功能封装进对象,强调具备了功能的对象。关注的是解决问题需要哪些对象,面对对象是基于面向过程的。
类:类是具有相似内部状态和运动规律的实体的集合(或统称、抽象)。
对象:即指现实世界中的各种各样的实体,既可以是具体的事物也可以是指抽象的事物。
一个类可以实例化多个对象
类的构成:1、事物名称(类名)
2、属性
3、行为(功能,类的方法)
类的抽象:拥有相同(或者类似)属性和行为的对象都可以抽象出一个类
抽象类的方法:一般名词都是类(名词提炼法)
类的声明和实现
类:1、.h类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end
注意:声明只是说明一下方法名、方法的返回值类型、方法接收得参数类型
2、.m类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementation和@end
方法:方法的声明和实现,都必须以+或者-开头
1、+ 表示类方法(静态方法)
2、- 表示对象方法(动态方法)
3、在.h中声明的多有方法作用域都是public类型,不能更改
成员变量(实例变量、属性):1、@public 全局都可以访问
2、@protected 只能在类的内部和子类中访问
3、@private 只能在类内部访问
类的定义分为两部分:
1)类的声明(规定当前类的:类名、属性、方法)
@interface类名:父类名NSObject
{
//类的属性
}
//类的行为
@end
2)类的实现(实现具体行为)
//类的属性
}
//类的行为
@end
2)类的实现(实现具体行为)
@implementation类名
//行为的具体实现
@end
创建对象并访问成员变量:1、[类名 new]; //类名:相当于定义一个结构体类型,新的类型
1)向计算机申请内存空间
2)给类中的每一个成员初始化值
3)返回新申请的空间的首地址
2、类名 *p = [类名 new]; //两种理解方式
1)定义了一个类名类型的指针变量,指针变量指向新申请的内存空间
2)用该类实例化了一个实例对象,对象的名称是p
3、用指针间接访问实例变量值
1)p->属性
无参方法的声明和调用:1、行为在@interface和@end之内,大括号之外
2、+类方法(不可以访问成员变量),-对象方法(可以访问成员变量)
3、-(void)方法名;
4、调用 [类名或对象名 方法];
有参方法的声明和调用:1、方法类型(返回值类型)方法名:(参数类型) 参数名; //一个参数的方法
2、方法类型(返回值类型)方法名:(参数类型1) 参数名1 and:(参数类型2) 参数名2; //两个参数
3、方法名: 方法名: and:
4、调用 [类名或对象名 方法名:参数 and:参数]; //类方法类名,对象方法对象名
5、and的后面还可以定义方法名→ and方法名:
#import<Foundation/Foundation.h>
//iphone类的声明
typedef enum color{kColorWhite, kColorBlack, kColorTHJ} iColor;
@interface iPhone : NSObject
{
//类的属性
@public
//手机颜色
iColor _color;
//手机的尺寸
float _size;
//手机的CPU
NSString *_cpu;
}
//类的行为(方法)
//查看手机的信息 把手机的实例变量值打印出来
-(void)aboutMyPhone;
//打电话,需要一个参数,参数就是电话号码
-(void)callPhone:(NSString*) telNum;
//发短信,给指定号码发送短信,短信的内容可以指定,两个参数
-(void)sendMessage:(NSString*) telNum andContent:(NSString*) content;
@end
//iPhone类的实现
@implementation iPhone
//行为的具体实现
//查看手机的信息 把手机的实例变量值打印出来
-(void)aboutMyPhone {
NSLog(@"颜色:%d,尺寸:%.2f, CPU:%@",_color,_size,_cpu);
}
//打电话,需要一个参数,参数就是电话号码
-(void)callPhone:(NSString*) telNum {
NSLog(@"给%@ 打电话", telNum);
}
//发短信,给指定号码发送短信,短信的内容可以指定,两个参数
-(void)sendMessage:(NSString*) telNum andContent:(NSString*) content {
NSLog(@"给%@ 发短信,短信内容: %@", telNum, content);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool{
//创建对象
iPhone *iPhone7Plus = [iPhonenew];
//设定手机的信息
iPhone7Plus->_color= kColorTHJ;
iPhone7Plus->_cpu= @"A20";
iPhone7Plus->_size= 7.9f;
//调用方法
[iPhone7Plus aboutMyPhone];
//给10086打电话
[iPhone7Plus callPhone:@"10086"];
//给10086发短信
[iPhone7Plus sendMessage:@"10086"andContent:@"你好,请问联通的电话多少?"];
}
return 0;
//iphone类的声明
typedef enum color{kColorWhite, kColorBlack, kColorTHJ} iColor;
@interface iPhone : NSObject
{
//类的属性
@public
//手机颜色
iColor _color;
//手机的尺寸
float _size;
//手机的CPU
NSString *_cpu;
}
//类的行为(方法)
//查看手机的信息 把手机的实例变量值打印出来
-(void)aboutMyPhone;
//打电话,需要一个参数,参数就是电话号码
-(void)callPhone:(NSString*) telNum;
//发短信,给指定号码发送短信,短信的内容可以指定,两个参数
-(void)sendMessage:(NSString*) telNum andContent:(NSString*) content;
@end
//iPhone类的实现
@implementation iPhone
//行为的具体实现
//查看手机的信息 把手机的实例变量值打印出来
-(void)aboutMyPhone {
NSLog(@"颜色:%d,尺寸:%.2f, CPU:%@",_color,_size,_cpu);
}
//打电话,需要一个参数,参数就是电话号码
-(void)callPhone:(NSString*) telNum {
NSLog(@"给%@ 打电话", telNum);
}
//发短信,给指定号码发送短信,短信的内容可以指定,两个参数
-(void)sendMessage:(NSString*) telNum andContent:(NSString*) content {
NSLog(@"给%@ 发短信,短信内容: %@", telNum, content);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool{
//创建对象
iPhone *iPhone7Plus = [iPhonenew];
//设定手机的信息
iPhone7Plus->_color= kColorTHJ;
iPhone7Plus->_cpu= @"A20";
iPhone7Plus->_size= 7.9f;
//调用方法
[iPhone7Plus aboutMyPhone];
//给10086打电话
[iPhone7Plus callPhone:@"10086"];
//给10086发短信
[iPhone7Plus sendMessage:@"10086"andContent:@"你好,请问联通的电话多少?"];
}
return 0;
}
0 0
- obeject-c语言简介、基础语法
- C语言基础语法
- C语言基础语法
- C语言基础语法
- C语言基础语法
- C语言基础语法
- 黑马程序员--Obeject-C语法知识笔记小总结
- OC:Obeject-C语法知识笔记小总结
- C语言基础-基础语法
- Frist Obeject-C
- obeject-c ARC
- C语言语法基础考试
- Objective-C语言:基础语法
- C语言-1-基础语法
- C 语言基础语法1
- C语言基础语法2
- C语言基础—基础语法
- 黑马程序员-----------C语言基础-----------基础语法
- 程序员在编程中遇到的奇葩弱智问题
- poj 2057 树形dp+贪心(蜗牛找家的期望值)
- 话说移动时代的桌面操作系统
- Java/C++_类的默认的初始值
- 当幸福来敲门观后感
- obeject-c语言简介、基础语法
- php 微信开发之 微信支付 v3 配置
- suse9安装Python3.4.0和Djang1.84
- Jsp,Servlet,Java中详细获得路径的方法!
- memcpy函数用法
- codeforces 540 E. Infinite Inversions (离散化 + 树状数组)
- hdu 1005 数据大时超内存找规律
- 二分查找之美:二分查找及其变体的正确性以及构造方式
- RTMP 4 Android