Obj-C运行效率仅次于C,开发效率不逊于C++/JAVA。
OC语法概述:
(1)OC中没有类似Java的报名概念,取而代之的是程序设计师给类名加上前缀,以有效防止名称冲突,如NSString、NSArray(前缀都是NS)。
(2)为避免与C/C++的关键字冲突,所有OC关键字都以@开始。如:
@interface、@implementation、@end、@public、@protected、@private、@selector、@try、@catch、@throw、@finally、@protocol、@class。
(3)OC2.0引入的新关键字
@property、@synthesize、@optional、@required、@dynamic。
(4)OC中,BOOL的YES为1,NO为0,(C中,0为NO,非0为YES),要加以区别。
OC语法纵览:
(1)基本数据类型:int、float、double、char、BOOL(YES/NO)等。
(2)id类型:每个对象都可以表达为id类型,可以认为是NSObject或者void。
(3)nil:等同于NULL。
(4)基类:NSObject。
(5)继承:单继承。
(6)多态:支持多态。
(7)抽象类:支持抽象类。
OC没有真正的重载:
-(void) setAge; //方法名是setAge
-(void) setAge:(int)_age; //方法名是setAge:
-(void) setAge:(int)_age AndNo:(int)_no; //方法名是setAge:AndNo:
类的定义:
1.OC中类分为2个文件:
(1).h 类的声明文件,用于声明变量、函数(方法)
(2).m 类的实现文件,用于实现.h中的函数(方法)
2.类的声明使用关键字@interface、@end。
3.类的实现使用关键字@implementation、@end。
4.方法的声明和实现,都必须以+或者-开头
(1)+表示类方法(静态方法)
(2)-表示对象方法(动态方法)
5.在.h中声明的所有方法都是public类型(通过Category可以实现private)。
6.变量的作用域
@public 全局都可以访问
@protected 只能在类内部和子类中访问
@private 只能在类内部访问
7. 变量必须定义再类的{...}中
OC与C的一些语法差别:
(1)NSLog支持printf的所有功能,打印出来结果还提供日志时间和换行。
(2)import可以自动防止同一个头文件被包含多次;include可能会存在重复定义,需要使用ifdef来解决。
(3)#import <...>表示包含系统自带的文件,#import "..."表示包含开发人员自己创建的文件