今天OC的第一天学习 主要是为了熟悉OC的操作和一些代码操作
1.OC的输出方法
比printf多了一个换行
NSLog(@"这是OC的第一节课");
@符是OC关键字的标志
2.C语言基本数据类型intfloatchar
OC常用基本数据类型
NSInteger 整形
CGFloat 浮点型
NSString
定义一个字符串,如果有*就代表这是一个对象
NSString *string =@"今天你吃了吗";
输出字符串
格式化输出占位符只要你是对象都可以用%@来占位
NSLog(@"%@",string);
// 基本数据类型用什么来当占位符
NSInteger number =5;
NSLog(@"%ld",number);
CGFloat score = 10.5;
NSLog(@"%f",score);
#pragma mark -- 用类实例出一个对象 ( 创建一个对象 )
3.创建对象分两个过程
1.分配内存空间(堆区开辟空间需要管理的)
2.对对象进行初始化
创建一个人的对象
根据使用方式来命名的方法
减号方法(实例方法)(对象方法)使用对象来调用
加号方法(类方法)使用类名来调用
如何调用方法?
OC当中调用方法使用中括号来调用
Person *p = [Person alloc];
<span style="font-size:18px;">[p init];// 对对象进行初始化
Person *jDragon = [[Person alloc] init];</span>
new这个方法就相当于开辟空间并初始化
Person *p1 = [Person new]; 使用new的方法无法直接给其初始化赋值
3.调用SayHi方法
[jDragon SayHi];
给实例变量赋值 (给对象赋值)
jDragon->_name = @"姜龙";
jDragon->_sex = @"男";
jDragon->_age = 25;
前面如果有中文的话没提示
NSLog(@"姓名:%@性别:%@年龄:%ld",jDragon->_name, jDragon->_sex, jDragon->_age);
instancetype表示返回一个对象类型
void *无类型指针可以转化为任何类型的指针
id表示一个对象类型 (可以声明一个对象)instancetype是不行的只能做返回值
4. 利用自定义初始化方法创建一个对象
Person *p1 =[[Person alloc] initWithName:@"姜龙" sex:@"男" age:18];
// 介绍一下自己
<span style="font-size:18px;">[p1 SayHi];
Person *p2 = [[Person alloc] initWithName:@"周杰伦" sex:@"男" age:18];
Person *p3 = [[Person alloc] initWithName:@"晴天" sex:@"女" age:17];
[p2 SayHi];
[p3 SayHi];</span>
下面是类的特征和行为的代码
.h接口文件
@interface(接口文件特征)后面类名 : (继承自)父类NSObject
#import<Foundation/Foundation.h>
@interface Person :NSObject
{
1.添加一个关键字进行修饰表明实例变量的可见度
@public关键字代表公开的意思
声明的实例变量(特称)要写一大括号
只要是特征名字要加下划线
<span style="font-size:18px;">@public
NSString *_name; // 姓名
NSString *_sex; // 性别
NSInteger _age; // 年龄</span>
}
2.中间写声明或者实例变量(特征)行为的声明
行为(方法)
void sayHi(); // C语言声明函数
打招呼
- (void)SayHi;
重写初始化方法 重写的是父类的方法
重写的话一定要跟父类的方法名字一样返回值一样 参数一样只有方法的实现是不一样的
- (instancetype) init;
自定义的初始化方法
- (instancetype)initWithName:(NSString *)name
sex:(NSString *)sex
age:(NSInteger)age;
#import"Person.h"
@implementation Person
自定义的初始化方法
- (instancetype)initWithName:(NSString *)name
sex:(NSString *)sex
age:(NSInteger)age;
{
// 对实例变量(特征)进行赋值
_name = name;
_sex = sex;
_age = age;
returnself;
}
一般重写的初始化方法写在最上面
-(instancetype)init
{
// 需要一个返回值
// self关键字在本类中表示本类的对象
return self;
}
中间写行为(方法)的实现部分
打招呼的实现
-(void)SayHi
{
// 介绍一下自己打印一下实例变量(特征)
NSLog(@"我是%@性别%@今年%ld",_name,_sex,_age);
}