【objc】objective-c学习(1)
2012-08-28 21:19 Loull 阅读(283) 评论(0) 编辑 收藏 举报一、开发环境
使用xcode,可以再app store里面下载,但我嫌速度慢,自己下载安装了,还安装了command line tool,不知道有没有重复。
用的是4.4.1版本,很多教程是老版本的,所以有些东西不太一样。
创建命令行程序,使用ObjC:
新建项目->mac---application---command line tool--->选择Foundation。。那什么的,就是用ObjC的命令行程序。
二、基本语法
1、使用#import,可以保证头文件只被引用一次,少了#ifdef,#endif的麻烦。
2、Foundation是框架,框架是一种聚集在一个单元的部件集合,包含头文件、库、图像、声音文件等。Cocoa的组成部分由Foundation和Application Kit框架。
3、Cocoa对其所有函数、常量和类型名称都添加了“NS”前缀。
NSLog(@”Hello World”);
@表示字符串作为NSString来处理
4、BOOL类型:具有YES和NO值,
与C的bool类型不同,非零的BOOL值不一定是NO。
三、面向对象
1、void drawShape(id shapes[], int count)
{
int i;
for(i = 0; i < count; i++){
id shape = shapes[i];
[shape draw];
}
}
id:是泛型,用于表示任何类的对象
[shape draw]可以理解成向shape对象发送draw消息;或是让shape对象调用draw方法。
2、定义接口@interface
@interface Circle : NSOject //继承
{
ShapeColor fillColor;
ShapeRect bounds;
}
-(void) setFillColor : (ShapeColor) fillColor; //类型用()括起,-短横表示声明方法而不是函数
-(void) draw;
@end //Circle
两个参数的方法调用
[textThing setStringValue: @”hell0”
color: kBlueColor];
3、接口/方法实现@implementation
4、对象实例化 [Circle new];
id shape = [Circle new ];
5、继承 , 单继承,self关键字指向对象本身,super关键字引用父类成员
6、复合:复合是通过包含作为实例变量的对象指针实现的。(对象之间的组合)
@interface Unicycle : NSObject
{
Tire *tire;
}
7、存取方法。不将get作为getter方法的前缀
四、头文件.h,实现问.m
1、循环依赖关系,@class很有用
即A类使用B类,B类也使用A类,如果试图#import语句让这两个类相互引用,会出现编译出错。
可以再A.h中使用@class B, B.h中使用@class A
@class指令能减少编译时间,它告诉编译器“相信我,你最终能够了解这个名称的类”
五、使用Xcode,快捷键
command [ 左移代码块
tab 接受代码提示
esc 显示代码提示菜单
control-. 循环浏览代码提示
control-F 前移光标
control-B后移
control-P上移
control-N下移
control-A行首
control-E行尾
control-D删除光标右边的字符
control--K删除行
command-alt-P继续(调试)