黑马程序员 _5 OC基础 简单语法

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

OC语言就是C语言加上了一层面向对象的语法的扩展,完全兼容C语言。


1.OC程序的开发过程:

.m源文件-->.o目标文件-->a.out可执行文件

入口仍然为main函数,与C一样,执行过程中不能执行前面没有定义的内容或函数,想调用必须之前声明

 2.简单语法

语法中的字符串要用@开头,用NSLog函数打印,会自动换行。

OC新添的关键字都是以@开头,比如 @interface ,@implementation,@end

基本数据类型与C一致,不过多了BOOL类型(YES\NO)

nil相当于Java的null , self 相当于Java的this,基类也就是所有类的父类NSObject。

3.OC的#import 相当于C语言中的#include 用来拷贝文件的内容

#import <Foundation/NSObjCRuntime.h>

    NSObjCRuntime.h中有NSLog函数的声明,所以每次使用NSlog函数都要导入Foundation框架,这样可以使用该框架的所有内容

4.运行过程

 1> 编写OC源文件:.m.c

 2> 编译:cc -c xxx.m xxx.c

 3> 链接:cc xxx.o xxx.o -framework Foundation

   (只有用到了Foundation框架才需要加上-framework Foundation)

 4> 运行:./a.out

5.常见扩展名:

.h  头文件,用于描述类的组成,包括成员变量,成员方法,类方法类变量

.cc源文件

.m OC源文件
 
.mm  除了OC、C代码还可以包含C++代码

6.类

在OC中需要用两个文件来描述一个类,一个.h声明文件,来声明成员变量、方法。关键字@interface和@end;一个.m实现文件,关键字@implementation和@end。

有点类似 再C语言中的声明函数文件.h和在.c中实现,就像是我想做什么,先在.h文件中绘制一个草图,然后再在.m中实现。

7.方法 

方法的声明和实现都要用+或-号开头,+表示类方法(静态方法),-表示对象方法(动态),在.h中的声明方法都是Public类型

8.成员变量 

作用域和Java类似 有@public(全局可访问) @protected(只能在类内部和子类) @private(只能在类内部) 三种类型

9.创建类的过程 

1>声明

在.h文件 

@interface Person : NSObject  
{  
    @public  
    int age; // 年龄  
    char boold; // 血型  
}  
- (void)run; // 跑的行为  
@end

2>实现

在.m文件

@implementation Person  
- (void) run  
{  
    NSLog(@"%d岁,血型为%c的人跑起来了", age, boold);  
}  
@end  

再就是OC对成员变量取值赋值要用到set get方法,对age使用是就要命名为setAge,getAge,就是set/get + 成员变量首字母大写的命名方式,这样对以后的点语法使用相符合。


10.创建对象的过程

int main()  
{  
    // 创建人对象  
    Person *p = [Person new];  
    p->age = 22;  
    p->boold = 'A';  
      
    [p run];  
    return 0;  
}

利用Person类创建, OC是方法调用是用中括号[ ],方法调用者写在括号左侧,方法名写在括号右侧,中间留点空格。

或者可以是  Person *p1 = [Person alloc];

调用Person类的静态方法alloc分配内存  至于*,利用类名定义一个变量时,类名之后必须带上*号。

用->设置属性,与指向结构体的指针访问结构体属性一样。

11.OC 方法和函数的区别

OC方法只能声明再@interface和@end之间,只能实现再@implementation和@end之间。也就是说OC方法不能独立于类外存在。

方法应该有声明,又实现,。只有声明,没有实现(经典错误);只有实现,没有声明(编译警告,能调用,OC弱语法)。

1>有参数的方法:

- (double)square:(double)number;  
 
- (double)square:(double)number{  
      return number * number;  
}  
冒号是方法名的一部分,同一个类中不允许两个对象方法同名,即使参数不一样。

调用 方式:[q square: 10];

2>无参数的方法

- (double)pi;  
 
- (double)pi{  
      return 3.14;  
}



----------------------  ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值