黑马程序员 OC------入门语法学习

---------------------- <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函数

printfNSLog区别:

     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;

}

四;类方法:

     > 加号开头 +

     > 只能由类名调用

     > 类方法中不可以访问成员变量

     > 类方法中可以调用类方法

     > 类方法中不能直接调用对象方法

     > 类方法的名称可以和对象方法相同

     

     类方法的优点"

     > 不依赖对象,执行效率高

     > 能用类方法尽量用类方法

     

     类方法应用场景:

     当方法内部不需要使用到成员变量的时候就用类方法

     类方法一般用于编写工具方法

 类方法:通过类名调用的方法   [类名/对象 方法名称];


---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值