黑马程序员技术交流社区

标题: OC第3天学习总结 [打印本页]

作者: pumpkin    时间: 2015-12-7 22:01
标题: OC第3天学习总结
1.------<a  target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
黑马程序员—OC第三天学习总结
好吧,如标题所示,这是我对OC第三个文件夹个人认为比较重点或者是比较容易忘记的知识点进行整理,以便自己的日后复习。也希望对初学者有所帮助~

+(double)sumofNum1:(double)num1 andNum2:(double)num2;
+表示类方法;
第一个括号是返回值内容,第2个括号和第3个括号是参数类型;
下划线是参数名;
剩下的是方法名;
类方法的调用:[类名   类方法名];

@interface caculator:nsobject
{
}
+(int)add:(int)num1 andnum2:(int)num2;
+(int)jian:(int)num1 andnum2:(int)num2;
+(int)cheng:(int)num1 andnum2:(int)num2;
+(int)chu:(int)num1 andnum2:(int)num2;
@end

@implementation caculator
+(int)add:(int)num1 andnum2:(int)num2{
     Return num1+num2;
}
@end

主程序:
Result=[caculator add:10 andnum2:10];

类方法和对象方法的存储图的差别;{类方法可以省内存,不需要再堆区申请任何存储空间}

类方法容易犯的错误:
@interface Car:NSObject
{@public
Int  _speed;
}
-(void)run;
+(void)run;
@end

@implementation car
+(void)run{NSLog(@“XXXX”,_speed;}//在类方法中不能访问实例变量,会出错
如果非得在类方法中有参数则
+(void)run:(int)speed;(没下划线是形参,下划线是实例变量)

对象方法可以调用其他的对象方法
类方法可以调用其他类方法

在类方法中,可以使用本类类名调用本类的类方法,也可以使用其他的类名调用其他的类方法。在类方法中可以调用对象方法(对象作为方法的参数传递过来,创建一个对象)

什么时候用类方法?当一个方法不需要用到成员变量的时候就可以定义成类方法。

匿名类能访问实例变量,但只能访问一次,以后再次访问就是新的空间。
使用匿名的类可以调用方法([[car new] stop];)
[[car alloc] init]//等价于我们之前写的[car new];[也属于匿名调用]
匿名类作为对象的参数:[p gohome:[car new];]
还可以这样[[Person new] gohome:[Car new]];

不封装的缺点:当一个类把自己的属性暴露给外部的时候,那么该类就失去了对属性的管理权。
封装的原理:实例变量默认只能被当前类的对象方法访问。

封装的步骤:定义设置实例变量(setter)和访问实例变量(getter)的方法
封装的意义:1保证数据安全2隐藏复杂的内容3隔离变化
在set方法的内部可以对一些不合理的赋值进行过滤。
命名规范
1必须以set开头,一定是个对象方法
2 set后面跟成员变量的名称首字母大写(_age    setAge)
3返回值一定是void
4一定要接收一个参数,而且参数类型要和成员变量类型一致
5形参名不能和成员变量一样
6 set方法实现中,一定要用形参给实例变量赋值
7形参名一般不能和成员变量名相同,如果相同则通过self访问成员变量
8在set方法中一定得给实例变量赋值
-(void)setName:(NSString*)name;//_name的set方法,以后对name设置值,一律使用该方法

Getter方法(接受器):
1是一个对象方法,要有返回值,返回值类型和成员变量类型一致
2方法名和去掉下划线的成员变量名一样
3没有参数
4方法实现中一定是返回实例变量值
-(NSString*)name;//以后获取name的值,统一使用name的get方法

Set方法的实现:
-(void)setNAme:(NSString*)name{
_name=name;
}

Get方法的实现:
-(nsstring*)name{
return _name;
}

主程序设置名称:
Person *p=[Person new]
[p setname:@”XXX”];

应用例题理解:
Kline.h
@interfac kline:NSObject
{
Float  _minp;
Float  _maxp;
Float  _avp:
}
//-(void)setminp:(float)minP;
//-(float)minp;
//-(void)setmaxp:(float)maxP;
// -(float)maxp;
//-(void)avp:(float)avP;
// -(float)avp;





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2