Objective-C语言中的方法的参数,声明-实现-调用,类加载
来源:互联网 发布:米筐投资 知乎 编辑:程序博客网 时间:2024/05/28 16:13
"一:无参数的方法的声明实现调用
"练习一
1.创建一个学生类,为学生类添加一个做作业的方法
1>指出方法名 doHomeWork
2>调用这个方法.
2.给学生类添加一个听音乐的方法
1>指出方法名
2>调用这个方法. listenMusic
@interface Student : NSObject
{
@public
//姓名
NSString * _name;
}
//做作业
- (void)doHomeWork:
//听音乐
- (void)listenMusic;
@end
@implementation Student
- (void)doHomeWork
{
NSLog(@"我在做作业!");
}
- (void)listenMusic
{
NSLog(@"我在听世界末日!");
}
@end
int main()
{
Student *xiaoming = [Student new];
[xiaoming doHomeWork];
[xiaoming listenMusic];
return 0;
}
"练习二
1.在上次练习的基础上,给做作业的方法添加一个参数,这个参数用NSString类型的,表示要做作业的学科名,在方法内部打印这个传递进来的学科名.
1>指出方法名 doHomeWork:
2>调用方法
2.在上次练习的基础上,给听歌的方法添加一个参数,这个参数用NSString类型的,表示要听的歌曲的名字,在方法内部打印这个传递进来的歌曲名.
1>指出方法名 listenMusic:
2>调用方法
@interface Student : NSObject
{
@public
// 姓名
NSString * _name;
}
//做作业
- (void)doHomeWork:(NSString *)bookName;
//听音乐
- (void)listenMusic:(NSString *)songName;
@end
@implementation Student
- (void)doHomeWork:(NSString *)bookName
{
NSLog(@"我在做%@作业!",bookName);
}
- (void)listenMusic:(NSString *)songName
{
NSLog(@"我在听 %@!",songName);
}
@end
int main()
{
Student *xiaoming = [Student new];
[xiaoming doHomeWork:@"OC基础02"];
[xiaoming listenMusic:@"世界未末日"];
return 0;
}
"二:带多个参数的方法的声明实现调用
"练习
在上次练习的基础上,把做作业的方法和听歌的方法合并成一个方法
@interface Student : NSObject
{
@public
//姓名
NSString * _name;
}
//做作业
- (void)doHomeWork:(NSString *)bookName :(NSString *)songName;
@end
@implementation Student
- (void)doHomeWork:(NSString *)bookName :(NSString *)songName
{
NSLog(@"我在做%@作业!",bookName);
NSLog(@"我在听 %@!",songName);
}
@end
int main()
{
Student *xiaoming = [Student new];
[xiaoming doHomeWork:@"语文" :@"天上掉下个猪八戒"];
return 0;
}
"三:方法的命名规范
"练习
在上一次练习的基础之上,按照规范把做作业方法和音乐方法进行命名,指出按照规范名之后的做作业方法和听音乐方法的方法名
doHomeWorkWithBookName: andSongName:
@interface Student : NSObject
{
@public
// 姓名
NSString * _name;
}
//做作业
//- (void)doHomeWork:(NSString *)bookName :(NSString *)songName;
-(void)doHomeWorkWithBookName:(NSString *)bookName andSongName:(NSString *)songName;
@end
@implementation Student
-(void)doHomeWorkWithBookName:(NSString *)bookName andSongName:(NSString *)songName
{
NSLog(@"我在做%@作业!",bookName);
NSLog(@"我在听 %@!",songName);
}
@end
int main()
{
Student *xiaoming = [Student new];
[xiaoming doHomeWorkWithBookName:@"语文" andSongName:@"123"];
return 0;
}
"四:同1个类的多个对象之间毫无关系 [掌握]
"复习
1.类是对具有相同特征和共同行为的一类事物的总称
2.类是模板类是图纸,对象就是通过模板/图纸创建出来的可以确定的一个实体
"练习
创建一个手机类
属性
设备的唯一标识: NSString * _UUID
颜色 NSString * _color
存储空间 int _space
方法
根据传入的号码拨打电话
闹钟叫
@interface IPhone : NSObject
{
@public
//设备的唯一标识:
NSString * _UUID;
//颜色
NSString * _color;
//存储空间
int _space;
}
//传入的号码拨打电话
- (void)callWithPhoneNum:(int)num;
//闹钟叫
- (void)alarming;
@end
@implementation IPhone
//传入的号码拨打电话
- (void)callWithPhoneNum:(int)num
{
NSLog(@"%d的号码已经拨通",num);
}
//闹钟叫
- (void)alarming
{
NSLog(@"闹钟叫了");
}
@end
1.一个类可以创建多个不同的对象.
2.同一个类创建的多个对象,每个对象都有自己独立的属性,不同对象的属性之间毫无关系.
3.不同对象的值毫无关系,在类的外部访问属性,一定告诉编译器,访问的是哪个兑现个想.
4.方法内可以直接访问属性,方法内访问的是当前调用这个方法的对象的属性.
5.同一个类创建的多个对象没有关系,方法中访问的属性,对当前调用方法的对象起作用,谁调用方法,方法内部访问的属性就是谁的.
"五:类加载
"强调
类的代码会在类第一次被访问的时候加载到内存,并存储到代码区,且只加载一次,只有在第一次被访问的时候.
1>对象在内存中的存储
@interface IPhone : NSObject
{
@public
NSString *_UUID;
NSString *_color;
int _space;
}
-(void)callWithPhoneNum:(int)num;
-(void)alarming;
@end
@implementation IPhone
-(void)callWithPhoneNum:(int)num
{
NSLog(@"已经拨通了电话%d",num);
}
-(void)alarming
{
NSLog(@"闹钟响了");
}
@end
分析下面代码的运行的全过程:
int main()
{
//要使用Iphone这个类,把这个类的代码加载到代码区.
//在栈区定义一个局部指针变量(IPhone类型)占据8个字节
IPhone *6spluse;
//1>在堆区开辟空间,存储对象,把类中的属性在这个空间中声明成变量
//2>声明一个isa指针指向代码区的类
//3>OC的指针设置为nil,基本数据类型设置为0,c指针设置为NULL
//4>返回这个对象在堆区的地址用指针变量来接收
6spluse = [IPhone new];
return 0;
}
2>对象在内存中的存储的细节
"问题
为什么对象中不存储方法,只存储属性?
1.不同的对象内部的属性的值各不相同.
2.不同的对象要调用的方法的内容都是相同的.
3.所以对象内部只有这个对象的属性,没有方法,这样做可以节省内存.
3> nil值 [掌握]
1.0x0是16进制的0,等价于10进制的0,这表示一个地址,这个地址表示不指向任何空间(地址是0X0的空间被保护了).
2.C语言中的NULL
1,是一个地址,这个地址就0x0,表示不指向任何空间.
#define NULL ((void*)0)
"nil
1.是OC中表示地址为0的这个地址,完全等价于NULL.
2.nil的底层
#define nil __DARWIN_NULL
#define __DARWIN_NULL ((void *)0)//和NULLL完全等价
3.建议
1>由于NULL是C语言的,如果不希望C语言的指针指向任何空间,就赋值为NULL
2>由于nil是OC语言的,如果不希望OC中的指向对象的指针指向任何空间,就赋值为nil
3>心里一定清楚nil完全等价于NULL
4.注意点
1>如果一个指向OC对象的指针被赋值为nil,表示这个指针不指向任何对象,此时如果通过这个指针访问属性,编译不报错,运行崩溃!
2>如果一个指向OC对象的指针被赋值为nil,表示这个指针不指向任何对象,此时如果通过这个指针调用方法,没有任何反应
@interface IPhone : NSObject
{
@public
NSString *_UUID;
NSString *_color;
int _space;
}
-(void)callWithPhoneNum:(int)num;
-(void)alarming;
@end
@implementation IPhone
-(void)callWithPhoneNum:(int)num
{
NSLog(@"已经拨通了电话%d",num);
}
-(void)alarming
{
NSLog(@"闹钟响了");
}
@end
int main()
{
IPhone *phone = nil;
//编译没有问题运行崩溃
phone->_UUID= @"123";
//编译没有问题运行没有反应
[phone alarming];
return 0;
}
- Objective-C语言中的方法的参数,声明-实现-调用,类加载
- Objective-C的方法声明和调用
- Objective-C - 方法的声明和实现
- Objective-C 中的类的声明和实现
- Objective-C 中的方法声明
- Objective-C 中的方法声明
- Objective-C 中的方法的调用
- 【Objective-C】类的属性、@property参数、前向声明
- objective-c 类的声明 以及实例调用
- objective C程序 无参方法和有参方法声明实现及调用
- Objective-C类-Objective-C 方法的参数
- objective-c 多参数方法的定义与调用
- objective-c 多参数方法的定义与调用
- Objective-C 编程语言(4)) 协议---声明由别人实现的接口,由别人来实现的方法,为匿名对象声明接口
- Objective-C学习笔记(十八)——对象方法和类方法的声明,定义及调用
- Objective-c类的声明
- Objective-c 简单的类的声明、实现与使用
- Objective-C 声明方法的格式
- POJ 3984 迷宫问题
- 史上最全的CSS hack方式一览
- Android scrollView如何实现监听
- lvds屏幕的数据手册如何看
- linux下文件的三种时间属性和vim的三种模式
- Objective-C语言中的方法的参数,声明-实现-调用,类加载
- 使用线程Thread实现自动播放动画
- 优化iOS程序性能的25个方法
- Android-MVVM架构-Data Binding的使用
- VS2010搭建一个新的工程常见问题如下
- LINUX下通过系统调用的文件操作
- js制作页面返回、刷新和返回并刷新
- 安鑫 到底是什么决定了人与人之间收入的巨大差别
- SharePoint 2013 设置网站集为”只读”