没有合适的资源?快使用搜索试试~ 我知道了~
object-c基础入门
4星 · 超过85%的资源 需积分: 10 12 下载量 107 浏览量
2012-08-10
11:27:48
上传
评论
收藏 332KB PDF 举报
温馨提示
试读
74页
object-c入门基础学习,有关于很多object-c的基本语法介绍,类的设计等,很适合初学者的学习资料!
资源推荐
资源详情
资源评论
一:Objective-C 入门
1、Cocoa 的组成
苹果公司将 Cocoa、Carbon、QuickTime 和 OpenGL 等技术作为框架集提供
Cocoa 组成部分有:
Foundation 框架(有很多有用的,面向数据的低级类和数据结构)
Application Kit(也称 AppKit)框架(包含了所有的用户接口对象和高级类,例如 NS……)
,还有一个支持框架的套件,包括 Core Animation 和 Core Image。
2、NSLog 相当于 printf()
NSLog(@"hello Objective-C");
//注:@是 Objective-C 在标准 C 语言基础上添加的特征之一,双引号的字符串前面有一个
@,这表示引用的字符串应该作为 Cocoa 的 NSString 元素处理
NSLog(@"are %d and %d different? %@",5,5,boolString(areTheyDifferent));
//注意%@:使用 NSLog 输出任何对象值时,都会使用这个格式说明
3、BOOL 使用 8 位存储,YES 定义为 1,NO 定义为 0,大于 1 不为 YES,跟标准 C 不同。
若不小心将一个长于 1 字节的整型值赋给 BOOL,则只截取低八位
Obejective-C 中 1 不等于 1,绝对不要将 BOOL 值和 YES 比较
二:面向对象的 Objective-C
4、使用间接从本地读取文件的例子
#import <Foundation/Foundation.h>
int main(int argc,const char * argv[])
{
if(argc == 1){
NSLog(@"you need to provide a file name");
return (1);
}
FILE *wordFile = fopen(argv[1] , "r");
char word[100];
while (fgets(word,100,wordFile)){
//fget 调用会保留分开每一行的换行符,我们不需要,把它替换为 0,表示字符串的结束
word[strlen(word)-1] ='\0';
NSLog(@"%s is %d characters long",word,strlen(word));
}
//运行用 ./Word-Length-4 /tmp/words.txt
若给了文件路径,那么 argc 会大于 1,然后我们可以查询 argv 数组得到文件路径。argv[1]
保存着用户提供的文件名,argv[0]保存着程序名。
在 XCode 中编译此程序需要在 XCode 文件列表中展开 Executables,双击程序名,在
Arguments 区域中添加启动参数
5、id
id 是一种泛型,用于表示任何类的对象,id 实际上是一个指针,指向其中的某个结构
6、[]
例[shape draw]
第一项是对象名,其余部分是要执行的操作
7、Objective-C 的 OOP 范例
1)@interface 部分(一般都作为.h 单独书写,声明部分)
@interface Circle:NSObject //说明这是为 Circle 的新类定义的接口
{
ShapeColor fillColor;
ShapeRect bounds;
} //括号内的是 Circle 对象需要的各种数据成员
- (void) setFilColor:(ShapeColor) fillColor; //先行短线表明“这是新方法的声明”如果是“+”
则表示是类方法,也称工厂方法
- (void) setBounds:(ShapeRect) bounds;
- (void) draw;
@end //Circle
2)@implementation 部分(一般写为.m 文件,实现部分)
@implementation Circle //@implementation 是一个编译器指令,表明你将为某个类提供代
码
- (void) setFillColor:(ShapeColor) c //在这里如果继续使用参数名 fillColor,就会隐藏
fillColor 实例变量,并且有警告
//我们已经定义了一个名为 fillColor 的实例变量,可以在该方法中引用该变量,如果使用相同
的另一个变量,那么前一个会屏蔽
{
fillColor = c;
}
- (void) setBounds:(ShapeRect) b
{
bounds = b;
}
- (void) draw
{
NSLog("^^^")
}
@end //Circle
可以在@implementation 中定义那些在@interface 中无相应声明的方法,可以把他们看做
是石油方法,仅在类的实现中使用。
注:Objective-C 不存在真正的私有方法,从而禁止其他代码调用它。这是 Objective-C 动
态本质的副作用。
8、中缀符(infix natation)
方法的名称和及其参数都是合在一起的
例如
一个参数:
[citcle setFillColor : KRedColor];
两个参数:
[circle setStringValue : @”hello there” color : KBlueColor];
9、继承(X 是一个 Y,isa)
1)Objective-C 不支持多继承,我们可以通过 Objective-C 的其他特性获取多继承的优点,
例如分类和协议
剩余73页未读,继续阅读
资源评论
- wangqiang6_20112012-12-11还可以, 了解了一点
zhoushengjianjy
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功