OC
交互层:cocoa touch
操作系统层:ios
底层:硬件
#include 完成头文件的导入,可能会导致头文件的相互引用和函数的重复定义。
#import 不仅完成头文件的导入,并且防止头文件的相互引用。
@在OC中一般表示一个对象@“hello”
也通常用于OC的一些关键字@end
%@表示输出一个对象类型
NSString *name = @"yql";
NSLog (@"%@",name);
NSArray *array = @[@"yql",@"2"];
NSLog(@"%@",array);
*
在C语言中表示指针变量或者是取某个地址里面的值
在OC中只需要明白在定义一个OC的对象类型前面添加一个*就可以了
int age = 20;
NSString *name = @"yql";
NSLog(@"my name is %@ age is %d",name,age);
类和对象
1.类与对象的概念
类是现实世界活思维世界中的实体在计算机中的反映、它将数据以及这些数据上的操作封装在一起。
对象是具有类类型的变量。类和对象是面向对象编程技术中的最基本的概念。
2.类与对象的关系
类是对象的抽象,而对象是类的具体实例
类是抽象的不占用内存,而对象是具体的,占用存储空间的
类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板
3.类的声明与实现
新建一个类
new file ->cocoa class (父类NSObject)
.h文件 用来定义属性和方法
.m文件 用来具体实现
//成员变量的声明
@interface (表示类的开始)Person(这个类的别名) :NSObject(这个类的父类){
//成员变量的声明(注意不能初始化!)-----------方法是暴露给外部访问的
NSString * name;
int age;
}
//方法的声明
@end
//类的实现部分
@implementation Person
@end
-:实例方法instance method
必须实例化这个类的一个对象 用这个对象调用的方法
+:类方法 class method
无需实例化一个对象,这个类本身就可以调用的方法
写得好的方法名,就是一个完整的句子
-(void)(返回值类型)setName(方法名):(NSString *)(第一个参数类型)aName(参数别名) adnAge(标签:说明这个参数的作用):(int)aAge(第二个参数);
@interface Person :NSObject {
//成员变量的声明 注意不能初始化---成员变量默认为私有的,只在本身这个类中可以使用
NSString * name;
int age;
}
-(void)setName:(NSString *)aName;//只有一个参数的方法
-(void)setName:(NSString *)aName andAge:(int )aAge;//多个参数
@end
@implementation Person
-(void)setName:(NSString *)aName{
_name = aName;
}
-(void)setName:(NSString *)aName andAge:(int)aAge{
_name = aName;
_age =aAge;
}
@end
//类的实例化
Person *jack = [[Person alloc] init];
//
Person *jack = [[Person alloc] init];
[jack setName:@"Jack"andAge:25];
头文件(.h文件)
@interface Person : NSObject{
//data 成员变量
NSString *name;
int age;
NSString *address;
}
//方法的声明 行为动作 提供给外部访问的
//声明一个没有参数的方法,这个方法没有返回值
-(void)useTools;
//声明一个拥有一个参数的方法,参数类型是一个字符串对象
-(void)setName:(NSString *)aName;
//声明拥有两个参数的方法
-(void)setName:(NSString *)aName age:(int)aAge;
+(void)doSomeThing;
@end
2. 方法的实现
#import '' Person.h''
@implementation Person
-(void)useTools{
NSLog(@"人类可以使用工具");
}
-(void)setName:(NSString *)aName age:(int)aAge{
name = aName;
age = aAge;
}
+(void)doSomeTing{
NSLog(@"这个方法是类方法");
}
@end
.m文件实现
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//定义小王
//1. 为这个对象分配一片内存空间
Person *xiaoWang = [Person alloc];
//2. 初始化这个片内存空间
xiaoWang = [xiaoWang init];
//实例化一个对象
Person *zs = [[Person alloc] init];
//调用对象里面的方法
[zs setName:@"zhangsan" age:23];
[zs useTools];
//访问类方法
[Person doSomeThing];
}
return 0;
}