首先,我要说的是,想要学好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键能补全我们为写完的keyword或标识符;

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

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

+:类方法

用类名去调方法;称之为类方法。

方法描写叙述:是用于创建一个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 


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