首页 > 代码库 > 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最好都要用驼峰标识来些标识符;
创建类:
类名:首字母一般都是大写;
提示:一般类名最好与文件名一样,方便程序员们的理解;一般类下的属性声明 用下划线开头,原因是这里声明的是全局变量,方便与局部变量中的关键词重名;这里只能声明变量,不能赋值;
方法的定义:
-(void)method : (int) arguments;
-(方法类型:实例方法,也叫对象方法)
+(类方法)
(void)返回值;没有返回值是void;
method 方法名;
(int《类型》):参数类型括起来;
arguments:参数名;
-------
方法定义分为:不带参数:如-(void)shoping;
带一个参数:void(shoping):(float)price;
带两个参数:void(shopping):(float)price :(float)weight;
-----------------------------
//在这里写方法的实现;
-(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