您的位置:首页 > 移动开发 > Objective-C

Objective-c学习笔记(一)oc的基本语法

2013-12-03 15:01 609 查看
OC的基本语法
1)OC关键字
为了避免与c c++ 关键字冲突

@class @interface @implementation @public @private @protected @try @catch @throw @finally @end @prototal @selector @synchronized @encode @defs 不明觉厉的关键字
2)面向对象概述
基类:NSObject
单继承特性
接口:支持接口(协议)@protocal 接口方法可选实现 可用@protocal实现多继承

多继承:使用接口来实现多继承
支持多态,支持异常处理@try @catch @finally
所有函数都是虚函数

砍掉了很多c++中复杂的语法
3)同C/C++比较
oc中,每个目标都可以表达为id类型,可以认为其是 NSObject * 或者 void *
nil 等同于null,表达一个目标的指针

4)类定义
OC类分为.h文件和.m文件
.h文件存放类,函数声明
.m文件存放类的具体实现
类声明使用关键字 @interface @end来声明
类实现使用关键字 @implementation @end来实现
5)对象方法和类方法
如果声明和实现一个类的函数,需要使用 + 或者 - 用于函数的开始
+ 代表类的方法
- 代表对象的方法
6)类声明<Dog.h> 类实现<Dog.m>举例
//类声明

#import <Foundation/Foundation.h>
@interface Dog: NSObject{
//写类字段

}
//声明类方法或对象方法
@end
//类实现
#import "Dog.h"
@implemetation Dog

@end

OC中使用import可以避免重复包含

7)创建/销毁OC对象
创建对象 Dog *dog = [Dog alloc];
初始化构造函数 [dog init];
销毁对象 [dog release];

8)类声明举例<Dog.h>
#import <Foundation/Foundation.h>
@interface Dog : NSObject{
int age;

}
-(id)init;
-(id)initWithAge:(int)newAge;
-(int)getAge;
-(void)setAge:(int)newAge;
@end
9)函数声明及调用
OC中其实并无函数的概念,而是定义为标签,eg:
无参数情况: -(int)foo; 调用 int ret = [obj foo]
一个参数 : -(int)foo:(int)a; 调用 int ret = [obj foo:100]
二个参数 : -(int)foo:(int)a :(int)b;调用int ret = [obj foo:10 :20]
带标签形式: -(int)foo:(int)a andB:(int)b; 调用 int ret = [obj foo:100 andB:200]
举个C/OC的例子:
//c eg.
int insertObjectAtIndexBefore(
Object o,int index,boolean before);
int ret = obj-> insertObjectAtIndexBefore(str,2,true)
//oc eg.
-(int)insertObject:(NSObject *)o AtIndex:(int)index Before:(BOOL)before;
int ret = [obj insertObject:10 AtIndex:2 Before:TRUE];
10)OC的重载
首先Oc不是严格的函数重载
@interface Foo:NSObject{
}
-(int)g:(int)x;
-(int)g:(float)x;//错误,这个方法和前一个方法冲突(因为没有标签)
-(int)g:(int)x :(int)y;//正确:两个匿名的标签
-(int)g:(int)x :(float)y;//错误,也是两个匿名标签,冲突,二选一
-(int)g:(int)x andY:(int)y;//正确:第二个标签是andY
-(int)g:(int)x andY:(float)y;//错误,标签相同,冲突,同上一个,二选一
-(int)g:(int)x andAlsoY:(int)y;//正确:第二个标签不冲突
@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: