首先,我要说的是,想要学好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
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++