您的位置:首页 > 职场人生

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

2014-03-25 11:20 323 查看
---------------------- 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培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: