oc学习第二站

对象的存储细节

1. 当创建一个对象的时候:Person *p1 = [Person new],做了三件事情:

    1.1,申请堆内存空间;

    1.2,给实例变量初始化;

    1.3,返回所申请空间的首地址;

 


2.  实例变量保存在堆区


3.  对象方法保存在代码区


4.   一个类可以创建多个对象;


.两个使用的代码编辑指令
#pragma mark指令


功能:对代码分组,方便代码查找和导航


使用格式: #pragma mark -


#waring  等待处理的功能,或者是未完成的功能



函数和对象方法的区别
 

对象方法:

-(void)run;

(1)对象方法的实现在@implementation...@end

对象方法的声明只能写在 @interface...@end中间


(2)对象方法都以-号开头


(3)对象方法只能由对象来调用


(4)函数属于整个文件,可以写在文件中的任何位置,包括@implementation...@end,但写在 @interface...@end会无法识别,函数的声明可以在main函数内部也可以在main函数外部。


(5)对象方法归对象所有



在想学习对象方法的时候就对比着C 语言的函数来学习:

void run();

(1)所有的函数都是平行的

(2)函数不存在隶属关系

(3)使用的时候可以直接调用

(4)不可以访问对象中的成员变量




对象和方法之间的关系
 

1.对象作为方法的参数

-(void) displayPerson:(Person *)person{

    NSLog("姓名:%@",person->name);

}



2.对象作为方法的返回值

-(Person *)changePerson:(Person *)person{

    person->name = @"唐僧";

    return person;

}


===========================================

. NSString的创建和使用

1,创建常量字符串,注意使用“@“符号。(nsstring---->oc中专门用来表示字符串)

NSString *astring = @"This is a String!"//后面的是常量,前面的是指针变量


2NSString *s1 = [NSString new];//没有意义

s1 =@"jian le ma";


3、创建字符串的第三种方法

//         格式化创建字符串(按照指定的格式创建字符串)

NSString *imgName = [NSString stringWithFormat:@"xxxxxx%02d.jpg",i];


4、用一个已经存在的字符串创建一个新的字符串

NSString *s2 = [[NSString alloc] initWithString:s1];



5.NSString长度计算方法.

NSString *str = @"ban";

[str length]; // 这个方法是oc专门用来表示字符串长度


多文件开发

1,为什么要使用多文件?

在开发当中实现的功能一般会比较复杂所以会将类分成声明(.h文件)和实现(.m文件)部分,

2,.h文件中写成员变量和方法的声明.m文件中写成员变量和方法的实现.

这样写大大提高开发效率提高代码的维护性.



,类方法

特点:

1. 以加号( + )开头,

2. 调用格式:  [类名  方法名]



注意事项:

1. 类方法可以和实例方法同名相互之间互不影响


2. 类方法可以从父类继承而来,子类可以重写类方法 // ,description类方法


3. 类方法和实例方法一样在interface里声明implementation里实现。


4. 类方法由类名调用,  实例方法由对象调用。


5. 在类方法里使用了selfself指代的是调用者类


6. 在类方法中不能使用类的成员变量


7. 类方法和对象方法之间不能使用self相互调用


总结self : 谁调用当前方法self就代表谁  (self  在oc中非常重要)



.  类方法和对象方法的比较

1. 对象方法以减号开头可以使用成员变量

2. 类方法以加号开头,不能使用成员变量


3. 类方法使用场景

如果我们调用一个方法,该方法中不需要使用成员变量,那么我们可以将该方法声明为类方法


4. 匿名对象

匿名对象的使用场景当对象的方法只调用一次时,可以使用匿名对象来完成。


匿名对象优缺点 :

优点可以简化代码,方便方法调用;节省内存空间

缺点匿名对象实例化以后,只能使用一次



封装(oc中重要的特,也是面向对象的语言的特性)

1.什么是封装:

封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式


2. 封装的好处:

2.1  将变化隔离。(不管里面怎么变,使用者不需要知道)

2.2  便于使用。(使用者只需按照一定的方法使用就可以了)

2.3  提高重用性。(任何人都可以对已封装好的功能进行操作)

2.4  提高安全性。(由于暴露给使用者的只是一些外在的操作环节,而不是里面本质的东西,所以就提高了对他的维护性,也就是安全性)


3. 封装的原则:

3.1 将不需要对外提供的内容都隐藏起来。

3.2 把属性都隐藏,提供公共方法对其访问。



4. setter方法的实现

 set方法的书写规范:

1) set方法一定是一个对象方法

2) set方法一定不能有返回值

3) set方法必须以set开头

4) set之后跟的是 实例变量去掉下划线,并且首字母大写

5set方法一定有参数,而且参数的类型和实例变量的类型一致

6) set方法的形参名 一般是 去掉下环线的实例变量名

7)形参名不能和 实例变量名同名

8) set方法实现中,一定要用形参给实例变量赋值


成员变量int _age; setter方法

-(void)setAge:(int)age{

    

    _age = age;

}


get方法书写规范:

1) get方法一定是一个对象方法

2) get方法一定有返回值,返回值的类型和实例变量的类型要一致

3) get方法的方法名 是去掉下环线的实例变量名

4) get方法一定没有参数

5) get方法的实现中,一定是返回实例变量值


成员变量int _age; setter方法

-(int)age{

    return _age;

}



组合&依赖&关联

1. 组合:

把具有相同基类类型的对象组合到树形结构中,以表示部分-整体的层次结构,使得用 户对单个对象和组合对象的使用具有一致性。


2. 依赖:

A对象作为B对象的局部变量或是方法形参说明B依赖与A, 这时候我们称AB之间存在一种依赖关系


3.关联:

当一个对象拥有另外一个对象的时候B对象为A对象的成员变量的时候,B对象与A对象之间存在一种关联关系。 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值