Object 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动态本质的副作用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值