1.对象存储的细节 new
03. 一个类可以创建多个对象,每个对象地址都不同
2.#pragma mark的使用
1、就是声明多个多个类时或者是在.M文件中中间写上pragma mark就会清楚的在x扣得上面能清楚的看到区分出来
3对象和方法之间的关数连续传递
1、对象作为方法的参数
案例:比如人用抢
定义完声明和实现以后
eg:
显示人信息
- (void)showPerson:(Person *)person;
就是在实现中打印出来
在main函数直接直接用就好了
2、对象作为方法的返回值
- (Person *)changeSex:(Person *)person;
在.M中直接 给对象在从新赋值 参数名->_变量=赋值
顾名思义 就是在返回值中写 return person4对象作为方法的参
人要调用抢
所以在main文件中把枪传给人用,
[人的指针 枪的方法名 :枪的指针]
#import <Foundation/Foundation.h>
//枪类的声明
@interface Gun : NSObject
{
@public
//定义实例变量
NSString *_size;//型号
int _bulletCount;//子弹数
}
//射击方法的声明
- (void)shoot;
@end
//枪类的实现
@implementation Gun
//射击方法的实现
- (void)shoot{
if(_bulletCount > 0){
_bulletCount--;
NSLog(@" %@ 正在突突突的射击, 剩余子弹:%d", _size, _bulletCount);
}else
{
_bulletCount = 0;
NSLog(@"没有子弹了,还突突个毛线, 剩余子弹数:%d", _bulletCount);
}
@end
//士兵类的声明
@interface Soldier : NSObject
{
@public
//姓名(_name)生命(_life) 等级(_level)
NSString *_name;//姓名
int _life;//生命
int _level;//等级
}
//开枪方法的声明
- (void)fireByGun:(Gun *)gun;
@end
//士兵类的实现
@implementation Soldier
//开枪方法的实现
- (void)fireByGun:(Gun *)gun{
//开枪射击
[gun shoot];
}
@end
int main(int argc,constchar * argv[]) {
@autoreleasepool {
//创建枪对象
Gun *g = [Gun new];
//给实例变量赋值
g->_size =@"AK-47";
g->_bulletCount =5;
//创建士兵对象
Soldier *s = [Soldier new];
//给实例变量赋值
s->_name =@"蓝博";
s->_life =200;
s->_level =3;
//调用方法
[s fireByGun:g];
[s fireByGun:g];
[s fireByGun:g];
[s fireByGun:g];
[s fireByGun:g];
[s fireByGun:g];
}
return0;
}
5,NSString
1,计算英文字符串长度时
一个字符串就是一个字节
nsstriing *s1=@“fdg”;
int a=[s1 length];
NSlong(@"%d" a );
2,中文
NSString *s2 = @"学挖掘机哪家强"; //7汉字
int b = [s2 length]
NSLog(@"%d", b); //7字节
3,中英混合输入NSString *s4 = @"学挖掘机哪家强ObjectC";//14
int d = [s4 length];
NSLog(@"%d", d);
6多文件管理1,就是在.h文件中写一个声明,
2,在.m文件中写一个实现,
3、然后把头文件引入main函数中,在main函数中调用