1 程序整体语法结构 [Objective-C基础教程]

一个简单的示例:
//*********************************************************************************
//Fraction.h 文件
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
{
int numerator ;
int denominator ;
}
- ( void ) print ;
- (void) setNumberator : (int) n;
- (void) setDenominator : (int) d;
@end

//Fraction.m 实现文件
@implementation Fraction
- ( void ) print
{
NSLog(@"%i/%i",numerator , denominator) ;
}
- (void) setNumberator : (int) n
{
numerator = n;
}
- (void) setDenominator : (int) d
{
denominator = d;
}
@end
//*********************************************************************************

Fraction * myFraction = [[Fraction alloc ] init ] ;
获得对象的实例并且初始化了其实例变量(可以这样理解:将 alloc 消息发送给 Fraction 类请求创建 一
个新实例,然后向新创建的实例对象发送 init 消息来初始化该对象)。
另外一种方法:
Fraction * myFraction = [Fraction new] ;但是通常使用第一种方式

对象调用方法 [myFraction setNumerator : 1] ;
用完释放 Fraction 对象的方法: [myFraction release] ;
注: 创建一个新对象,都要请求分配内存,在完成对该对象的操作时,必须释放其所用的内存空间
i i i i Phone Phone Phone Phone 平台不支持垃圾回收机制
外部要访问实例变量需要通过类的方法来检索其值,不能直接访问
示例:
//*********************************************************************************
//Rectangle.h 文件
@interface Rectangle : NSObject
{
int width ;
int heigth ;
}
@property int width , heigth ;
- ( int ) area ;
- ( int ) perimeter ;
- ( void ) setWidth :( int ) w andHeigth :( int ) h ;
@end

//Rectangle.m 文件
#import "Rectangle.h"
@implementation Rectangle
@synthesize width , heigth ;
- ( void ) setWidth :( int ) w andHeigth :( int ) h
{
width = w ;
heigth = h ;
}
- ( int ) area
{
return width *heigth ;
}
- ( int ) perimeter
{
return ( width +heigth ) *2 ;

}
@end
下面是 Rectangle 的子类 Square
//Square.h 文件
# import "Rectangle.h"
@interface Square : Rectangle
- ( void ) setSide :( int ) s ;
- ( int ) side ;
@end ;

//Square.m 文件
# import "Square.h"
@implementation Square : Rectangle
- ( void ) setSide :( int ) s
{
[self setWidth : s andHeight : s]
}
- ( int ) side
{
return width ;
}
@end ;
//*********************************************************************************

self self self self 关键字用来指明对象是当前方法的接收者。
例如下面是一个子类(正方形)的方法实现:
- ( void ) setSide: ( int ) s
{
[self setWidth : s andHeight : s]
}
利用其父类(长方形)的 setWidth: andHeight: 方法来实现的。
调用消息的类可以不知道如何响应这个消息。如果它不知道如何处理这个消息,它会自动的将这个消息 转
给的父类,还不行就转给父类的父类,都没有找到就会报错 。
与 C C C C 语言兼容的地方:
预处理:
#define 语句和 c 一样

# 运算符: #define str ( x ) #x
表示在调用该宏时,预处理程序根据宏参数创建 C 风格的常量字符串。
例如: str ( "hello" )将产生 "\"hello"\"
## 运算符:
表示用于把两个标记连在一起
#import 语句相当于 #include 语句,但是 #import 可自动防止同一个文件被导入多次。
# 条件编译语句( #ifdef 、 #endif 、 #else 、 #ifndef )和 C 一样
#undef 语句 消除特定名称的定义
其他基本的 C 语言特性:
数组、函数、指针、结构、联合的用法和 C 一样。
Compound Literal 是包含在括号之内的类型名称,之后是一个初始化列表。
例如 如果 intPtr 为 int * 类型:
intPtr = ( int[100] ) {[0] = 1, [50] = 50, [99] = 99};
如果数组大小没有说明,则有初始化列表确定。
其他如循环语句( do while 、 while 、 for )、条件语句( if 语句( if-else 、复合判断条件等)、 switch 语 句 )、
Boolean(YES NO) 、条件运算符、 goto 语句、空语句、逗号表达式、 sizeof 运算符、命令行参数、位操作 都
和 C 一样。

来源://作者:/更新时间:2012-11-09
相关文章
评论:
验证码:
匿名评论:

最新文章

新热推荐

文章排行