Chinaunix首页 | 论坛 | 博客
  • 博客访问: 467345
  • 博文数量: 122
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 1540
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-26 11:11
文章分类

全部博文(122)

文章存档

2010年(1)

2009年(76)

2008年(45)

我的朋友

分类: LINUX

2009-04-22 15:19:16

其实也谈不上学,花了大概1个小时很快的过了一下而已。因为最近看.m又不是matlab的
文件,语法比较熟悉,于是想起来是不是这个类似于C的语言:Objective C.
很早朱老师就和我说不起过这个东东,Objective C --就像苹果所代表的用户品质一样--
简洁,优雅,于是我一直也在想什么时候能体验一下这样美的东西。


学习概要:
学习Object-C简单分为语法部分和类库,前者为语言本身,后者为开发所需。

几个概念:
XCode 集成开发环境 类似VistualStudio
Objective-C 语言本身
Cocoa 类库,框架 类似于.Net

语法与C相差无几,一眼看过去,很简洁。区别是有类继承。
类库该是不属于语言本身的,Object-C则更多是因为于苹果平台较密切,主要Cocoa类库
类似于MFC或.Net的一套开发框架,具体框架结构和原理还不懂。
非苹果平台下的Object-C呢?

类语法:
/* Speak.h */
#import
@interface Speak: Object {
char* string;
}
- setString: (char*) str;
- say;
- free;
@end
#import 是改进版的#include, 在编译相同的单元时不会被多次包括进行.
Object类是Objective-C类的超类. Speak类由编译程序指示字@interface和@end包围.
定义内部是花括号包围的代码块. 数据块后是类方法定义.每个方法用减号说明.

/* Speak.m */
#import "Speak.h"
@implementation Speak
+ new {
self = [supper new];
[self setString: ""];
return self;
}
- setString: (char*) str {
string = str;
return self;
}
- say {
printf("%s\n", string);
return self;
}
- free {
return [super free];
}

/* hellowobject.m */
#import
#import "Speak.h"

main() {
id speak;
speak = [Speak new];
[speak setString: "hello, world"];
[speak say];
[speak free];
}
编译器指示字@implementation说明源文件包含的是Speak类方法实现.
减号开头的是实例方法,只能被已经存在的对象调用; 任何时候都可以调用+开头的方法.
大多数方法返回的类型是id, 因此都返回的是self,这是对象自己引用自己的一种方法.

语法细节:
减号、中括号和NS****
减号表示一个函数、或者方法、或者消息的开始,怎么说都行。

比如c#中,一个方法的写法可能是:
private void hello(bool ishello)
{
//OOXX
}

用Objective-C写出来就是
-(void) hello:(BOOL)ishello
{
//OOXX


中括号
中括号可以认为是如何调用你刚才写的这个方法,通常在Objective-C里说“消息”。
比如C#里你可以这么写:this.hello(true);
在Objective-C里,就要写成: [self hello:YES];

NS****
NS是苹果自有的类专用的,它代表NeXTStep。Mac OSX就是在NeXTStep操作系统的基础上
发展起来的,苹果公司收购了NeXT公司,此举使乔布斯(Steve Jobs)重返苹果并重坐第一
把交椅。
苹果类库以NS开头,开发人员应避免自定义类库也以NS开头,避免混淆。

为什么 @"字符串"而不是"字符串"
"字符串"是C的字符串,@"" 是把C的字符串转成NSString的一个简写.
在需要NSString的地方才需要这个转化,例如NSLog里面.
在需要C string的地方,还是用"字符串"的.
另外,@""这个转换是不支持中文的.例如NSLog(@"字符串"); 是一定输出不了中文的.

nil :
Objective-C里的NULL(空)就这么写,表示空指针。
id :
一种比较特殊的数据类型,在Objective-C里,一切东西都是指针形式保存,你获取到的
就是这个对象在内存的位置,id用于标识此位置。
数组:
可以保存各种不同类型的数据,更新一个容器,大杂缸:)

有了这些,基本上可以读懂Objective C 代码了,这样暂时就足够了。在其对类的扩展
方面,没有学习。
我想想学到可用,在于研究Cocoa类库吧:)

可进一步学习的一个链接:(繁体)



阅读(1514) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

a525274592010-04-14 14:02:21

http://blog.chinaunix.net/u3/104182/group.html 欢迎加入我的博客圈,Objective-C 我开始学习这个了!