OC基础以及类的创建、调用,无参函数创建调用
一、NSLog和printf使用的差异
1、NSLog会自动换行,printf不会自动换行
2、NSLog会自动输出时间等项目信息,printf不会输出调试信息
3、NSLog函数的参数是一个NSString对象,printf是一个字符串常量指针
二、NSLog也能格式化输出,OC向下兼容C
OC中自己有字符串的表示方法:
NSString *str = @"苹果";
NSLog(@"%@",str);
printf不能使用
三、OC中@的使用
1)@"":表示讲一个C的字符串转黄伟OC的字符串对象NSString
2)@标识符:OC中大部分关键字都是以@开头的,比如@end等
四、OC中注释:不参与编译
1、单行注释://
2、多行注释:/**/
3、文档注释:
/**
*
*@param foodName 参数描述
*
*/
基本中:OC是C的一个扩展
五、OC与C的差异
1、源文件对比
1、C语言中后缀:.c源文件;.o目标文件;.out可执行文件;.h头文件
OC的后缀:
.h头文件:头文件包含方法,属性的声明
.m源文件:类的实现文件,参与编译的文件,用来实现类中声明的方法
2、基本语法对比
C常用的数据类型:
OC中的数据类型
2) 关键字注意事项:C语言的关键字都可以在OC源程序中使用,在OC新增的关键字使用时,要注意部分关键字以@来投,有的不使用@
3) 流程控制语句在OC中并没有新的,只是for循环有一个增强型的
4) 函数的声明与定义是有差异的
/*OC中新增数据类型介绍
1)Boolean类型的变量经常用于条件判断:取值true(1)与false(0)
2)BOOL存放逻辑值得另外一种方法:取值为YES(1)与NO(0)
*/
/*并不能检测所有
新增异常捕捉方法:@try...@catch...@finally
@try
{此处存放可能出错的代码}
@catch
{此处放出错以后,捕捉异常}
@finally{不管出错没有,这里的代码一定要执行}
*/
/*
类:
.h:类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end
.m:类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementaion和@end
方法:
方法的声明和实现都必须以“+”“-”开头
+ 表示类方法(静态方法)
- 表示对象方法(动态方法)
在.h中声明的所有方法作用域都是public类型,不能更改
成员变量(实例变量\属性):
@public 全局都可以访问
@protected 只能在类内部和子类中访问
@private 只能在类内部访问
*/
/*
类的定义分为两部分
1)类的声明(规定当前类的:类名、属性、行为)
@interface 类名:父类名 (NSobject)
{
//定义类的属性
}
//类的行为
@end
2)类的实现(实现具体行为)
@implementation 类名
//行为的具体实现
@end
*/
//创建一个类,并且创建一个对象,并且用对象访问存储空间的值
/*创建一个新对象:Car *car=[Car new];*/
#import <Foundation/Foundation.h>
//车的类的声明
@interface Car:NSObject
{
//类的属性
@public;
int lunzi;//车的轮子
NSString *color;//车的颜色
int speed;//车的速度
}
//类的行为
@end
//类的实现
@implementation Car
//行为的具体描述
@end
int main (int argc, const char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//在此处输入Objective-C代码
//创建Car类型的对象car1
Car *car1=[Car new];
//创建一个对象,实质还是指针 (用指针间接访问实例变量值)
car1->lunzi=3;
car1->speed=150;
car1->color=@"蓝色";
//查看车的信息
NSLog(@"轮子:%d,速度:%d,颜色:%@",car1->lunzi,car1->speed,car1->color);
[pool drain];
return 0;
}
/*OC中对象的创建
[Car new];
//做了三件事
1、项计算机申请内存空间
2、给类中的每一个成员初始化值
3、返回申请的空间的首地址
Car *p=[Car new];
理解一:
//定义了一个Car类型的指针变量
//指针变量指向新申请的内存空间
理解二:
//用Car类实例化了一个实例对象,对象的名称是p
*/
//无参方法声明,实现,调用
#import <Foundation/Foundation.h>
@interface Car:NSObject
{
//类的属性
@public;
int lunzi;//车的轮子
int speed;//车的速度
NSString *pp;//车的颜色
}
//类的行为
-(void)run;//定义一个无参无返回值的方法
-(void)stop;
@end
//类的实现
@implementation Car
//行为的具体描述
-(void)run{
NSLog(@"车跑在大道上");
}
-(void)stop{
NSLog(@"车停下来!");
}
@end
int main (int argc, const char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//在此处输入Objective-C代码
//创建Car类型的对象 对象名 car
Car *car=[Car new];
//方法调用方法
[car run];
//向car对象发送stop消息
[car stop];
[pool drain];
return 0;
}
/*
无参方法声明
方法类型标示符 (返回值类型) 方法名称:
不带参数的方法
声明:
-(返回值类型) 方法名 -(double) pi
方法调用:[类名或者对象名 方法名];
对象方法:
1、对象方法以“-”开头,如-(void) xx;
2、对象方法只能有对象来说明
3、对象方法中可以访问当前对象的成员变量
4、调用格式 [对象名 对象方法名];
类方法:
1、类方法以“+”开头,如+(void) xx;
2、类方法只能由类来调用
3、类方法不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间来存储类中的成员变量
4、调用格式:[类名 类方法名];
5、类方法不依赖于对象,执行效率高,能尽量用类方法的尽量用
*/
原文:http://www.cnblogs.com/gaozp/p/4894285.html