首页 > 代码库 > Objective-C学习1

Objective-C学习1

      首先,我要说的是,想要学好Objective-C(以下简称OC)就必须要有C语言的基础,因为OC是C语言的一个超集;OC是面向过程的语言.[C语言是面向对象的语言],OC中的好多语法和C语言中类似,OC也完全可以兼容C语言,实现混编;所以想学好OC,最好是有C语言的基础。(如果有C++的基础或者思想,就更能学好OC)

       1.OC中文件都是以.m的文件存储的,声明文件同c一样也是.h文件;

个人提醒:不管是C还是OC最好都要用驼峰标识来些标识符

创建类:

类名:首字母一般都是大写

定义类的步骤:
        1,定义类名;2,编写类的属性--->(实例变量) ;3,编写类的行为--->方法;

提示:一般类名最好与文件名一样,方便程序员们的理解;一般类下的属性声明 用下划线开头,原因是这里声明的是全局变量,方便与局部变量中的关键词重名;这里只能声明变量,不能赋值;

方法的定义:

-(void)method : (int) arguments;

-(方法类型:实例方法,也叫对象方法)

+(类方法)

(void)返回值;没有返回值是void;

method 方法名;

(int《类型》):参数类型括起来;

arguments:参数名;

-------

方法定义分为:不带参数:如-(void)shoping;

带一个参数:void(shoping):(float)price;

带两个参数:void(shopping):(float)price :(float)weight;

-----------------------------

方法的实现:
在.m中@implementation

//在这里写方法的实现;

-(void)shopping:(float)price{

NSLog(@"我正在shopping!");

}

@end;

然后在main函数中应用

#import "Person.h"

int main(){

//通过类名创建对象;

//Person *person = [Person alloc];

//person = [person init];

//alloc 是在内存中申请一块空间区域,来存放此对象的信息;

//下边调用init方法初始化一些默认数据;

Person *person = [[Person alloc] init];//将两个步骤嵌套在一起;

//左边是【通过类类型】声明变量;右边是创建对象;

 } 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//上节:定义类;用类创建对象;

-——————————————

还有一种创建对象方法:

Person * person2 =[Person new];(OC中不建议使用这种方式)

一般使用这种方式:Person *person1=[[Person alloc] init];

_______________________

调对象里的方法;

-开头的为:实例方法【或叫对象方法】;    +:类方法;

-开头的必须有对象;(如person1)

在main中执行到此↓:
[person1 shopping:200];//200为参数
就会进入到shopping函数中;
//这就是调用了这个shopping这个实例方法;实例方法必须有对象才能调用;
//通过类能创建很多方法出来;

----------------------------------

创建完对象person1;

设置名字和年龄;

没有办法直接设置名字和方法,只能通过方法来设置属性

设置名字方法:-(void)setName:(NSString *)name;//方法描述:设置属性 name;

实现:在.m文件中:

-(void)setName:(NSString *)name{

        _name = name;

}

----------------------------------

再回到main中设置名字:

[person1 setName:@"张三"];//把张三字符串传入到name函数中,name再把张三传给_name;

-----------------------------------

属性:又叫成员变量,又叫全局变量,又叫实例变量;全局变量所有的方法中都能用;

————————————————

 专门设置属性的方法:叫做设置器方法或者叫set方法;
在外部获取属性的方法:叫做获取器方法(get方法);有返回值;

-----------------------------------

 比如-(NSString *)name;
 
-(NSInteger)age;
实现:
 -(NSString *)name{
return _name;
}
-(NSInteger)age{
return _age;
}
调用:NSString *name1 = [person1 name]

+++++++++++++++++++++++++++++++++++++++++++++  

之前都是一个参数的方法;今天学多个参数的方法

—————————————————

-(void)setName:(NSString *)name setAge:(NSInteger *)age;//《方法名有两个部分:setName和setAge》;setAge在这里可以省掉(但是不推荐用);

实现:-(void)setName:(NSString *)name setAge:(NSInteger *)age{

_name = name;

_age = age;

}//一般不会这样定义,这里只是用于演示;一般都是一个变量定义一个设置方法

调用:[person1 setName:@"张三" setAge:22];【对象调用方法!】

————————————————

【在.m和.h间切换】command+cotrl+上下键;tab键能补全我们为写完的关键字或标识符;

————————————————

方法类型:-对象方法, +类方法;

+:类方法

用类名去调方法;称之为类方法;
方法描述:是用于创建一个Person对象的;
定义类方法:+(Person *)newPerson;
实现类方法:+(Person *)newPerson{
Person *p = [[Person alloc] init];
//这里可以初始化一些变量
//[p setName:@"zhangsan" setAge:22]
}
调用类:Person *person3 = [Person newPerson];

--------------------------------

如果没有创建对象,就不能使用属性;

实例对象都没有,哪儿来的属性?

要想使用,必须要有对象;

//在类方法中无法访问属性;

属性:谁调的方法 属性就属于谁;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

补充对象的创建;
创建一个对象的时候,里面的成员变量并没有初始化,那它们默认是什么呢?
@interface Person :NSObject
int _Age;

//系统默认为其初始化为:Byte:0;short:0;int:0;long 0L;char:\u0000‘ ;float:0.0F;double:0.0D;Bollean:FALSE;所有指针:nil;

@end 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++