object-c基础教程读书笔记 第二章:对C的扩展

object-c是拥有一些附加特性的C语言。


hello world的源代码如下:
#import <Foundation/Foundation.h>
int main(ubt argc,const char *argv[]){
    NSLog(@"hello world!");
    return (0);
}
分析如下:
1、#import
    与c一样,object-c使用头文件来包含元素声明,这些元素包含结构体、符号常量、函数原型等。在c里,用#include来实现。
    #import是GCC编绎器提供的,xcode在编绎object-c,c,c++时都会用到它。
    #import可保证头文件只包含一次,而无论它在文件中出现多少次。
    #import <Foundation/Foundation.h>:告诉编绎器查看Foundation框架中的Foundation.h头文件。

    框架是包含在一个单元中的部件集合,如apple公司将cocoa,carbon,quicktime,openGL等技术做为框架集。其中,cocoa的又由Foundation和Applicationn Kit(也称为AppKit)组成 ,另外还有两个支持框架的套件:Core Animation和Core Image。Foundatin框架又是处理用户界面之下的层的特性,如数据结构和通信机制 。所以,它非常重要!

    如果你要精通cocoa,还要学习AppKit,它包含Cocoa的高级特征:用户界面元素、打印、声音颜色等管理
    使用#import导入主头文件,可以使用整个框架的所有特性,且加载的速度会很快,不会因为文件数量的大而变慢。
    要查看Foundation框架包含哪些头文件,可以查年Headers目录:/System/Library/Frameworks/Foundation.framework/Headers/
2、NSLog()和@""
    NSLog()在c中用printf(),但NSLog()比printf()增加了特性。
    和printf()一样,NSLog()以字符串为第一个参数,这个字符串可以包含格式说明符 (如%d)
    NS前缀是有历史原因的,指的是NextSTEP。
    @是object-c在c的基础上添加的特性之一,它表示后面的字符串是作为cocoa的NSString来处理 。NSString与String相比,有如下功能:
        告知其长度;
        将自身与其它字符串比较;
        将自身转换为整型值或浮点值。
    而这些功能是使用c的字符串无法实现的。
   
       
布尔类型:
    c中是bool(true,false),而object-c中是BOOL(YES,NO)
    布尔型的例子如下:
#import <Foundation/Foundation.h>

BOOL arcIntsDifferent(int i,int j){
    if(i===j){
        return (NO);
    }else{
        return (YES)
    }
}
NSString *boolString (BOOL yesno){
    if(yesno==YES){
        return @"YES";
    }else{
        return @"NO";
    }
}
int main(int argc,const char *argv[]){
        BOOL b;
        b = arcIntsDifferent(5,5)
        NSLog("arc %d and %d is diffrent?%@",5,5,boolString(b));
        return (0);
}
分析如下:
    1、boolString()的返回类型是一个指向NSString的指针 ,这表明函数会返回一个cocoa的字符串,而不是c的字符串,所以函数内用@""。 

 

 


其它:                    
我开发的环境:
mac:10.6.3
xcode:3.2.4
ios sdk:4.1
xcode的目录:/Developer/Applications

你可能感兴趣的:(C++,c,cocoa,C#,读书)