---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
一:OC基础
#import <Foundation/Foundation.h>
Foundation.h其实是我们Foundation框架的主头文件
主头文件会自动拷贝框架中所有的头文件
#include 和 #import都是用来拷贝文件(把右边的文件拷贝到当前位置)
#include要防止重复拷贝,必须在文件中写入头文件卫士
#import 能够自动防止重复拷贝
OC和C语言一样,入口都是main函数
printf和NSLog区别:
1.名字不同
2.接收的参数不同
3.输出信息不同
4.NSLog会自动换行
5.引入的头文件不同
完整的定义一个OC类分为两个部分
OC中的类分为两个部分: 1.类的声明 2.类的实现
C语言中完整的定义一个函数分为两个部分: 函数的声明/函数的定义(实现)
1.声明一个类
@interface表示类的声明
@end 表示声明结束
注意点: 类名首字母一般大写
类的声明有两个作用: 声明类的属性和类的行为
在类名后面写上: NSObject 是为类让Iphone类具备创建对象的能力,也就是可以调用new方法
属性名称一般用_开头
OC中属性必须写在@@interface 和 @end之间的大括号中
格式;
@interface 类命 : NSObject
{
属性
}
方法声明;
@end
2.实现一个类
@implementation 表示实现一个类
@end //表示类实现结束
三;对象方法
对象方法:
> 减号开头-
> 只能由对象调用
> 对象方法中可以访问成员变量
> 对象方法中可以调用类方法
> 对象方法中可以调用对象方法
在OC中,要想修改一个对象的属性或者调用一个对象的对象方法,必须通过对象(指针)来修改和调用
想要通过类来创建一个对象,要调用类的一个方法, 调用一个叫做new的一个方法
在OC中想要调用方法,就立刻写上 [类名/对象 方法名称];
[Iphone new]; 做了三件事情
1. 开辟存储空间(开辟的存储空间是在堆内存中)
2. 初始化成员变量(写在类声明大括号中的变量称之为成员变量,也叫做实例变量)
3.返回内存地址
在OC中,要想调用某一个方法 首先写上[类名/对象 方法名称];
定义一个Iphone类型的指针保持Iphone对象的地址
保存了对象指针地址的变量, 我们就把他叫做某一个对象
例如:
Iphonep *p = [Iphone new];
例题说明:
人物(士兵)
类名:士兵(Soldier)
属性:生命值(_life),角色名称(_name),等级(_level)
方法:打手枪(fire) 换弹夹(clip) 打电话(callPhone)
#import <Foundation/Foundation.h>
typedef enum
{
kSoldierLevel1,// 大兵
kSoldierLevel2,// 列兵
kSoldierLevel3 // 士官
} SoldierLevel;
@interface Soldier : NSObject
{
@public//表示公开类中的属性 否则无法调用
int _life;// 生命值
NSString *_name;// 角色名称
SoldierLevel _level;// 等级
}
// 打手枪方法
- (void)fire;
@end
@implementation Soldier
- (void)fire
{
NSLog(@"打了一枪");
}
@end
int main(int argc, const char * argv[])
{
Soldier *s1 = [Soldier new];
s1->_name = @“史泰龙";
s1->_life = 100;
s1->_level = kSoldierLevel3;
[s1 fire];
return 0;
}
四;类方法:
> 加号开头 +
> 只能由类名调用
> 类方法中不可以访问成员变量
> 类方法中可以调用类方法
> 类方法中不能直接调用对象方法
> 类方法的名称可以和对象方法相同
类方法的优点"
> 不依赖对象,执行效率高
> 能用类方法尽量用类方法
类方法应用场景:
当方法内部不需要使用到成员变量的时候就用类方法
类方法一般用于编写工具方法
类方法:通过类名调用的方法 [类名/对象 方法名称];