外贸网站建设培训,西安市未央区建设局官方网站,网站源码建站教程,上海网络推广服务公司点击上方蓝字关注我#xff0c;了解更多咨询Objective-C学习中对 C 的扩展是本文要介绍的内容#xff0c;Objective-C和Cocoa是苹果公司Mac OS X操作系统的核心。Objective-C语言是C语言的一个扩展集#xff0c;许多具备Mac OS X外观的应用程序都是使用该语言开发的。Cocoa是… 点击上方蓝字关注我了解更多咨询Objective-C学习中对 C 的扩展是本文要介绍的内容Objective-C和Cocoa是苹果公司Mac OS X操作系统的核心。Objective-C语言是C语言的一个扩展集许多具备Mac OS X外观的应用程序都是使用该语言开发的。Cocoa是使用Objective-C编写的工具包它不仅包含Mac OS X用户界面的所有元素还包含其他许多内容。Objective-C文件的扩展名是.m在Xcode中.m文件、.c文件标准C程序、.cppC程序文件的编译工作都由GCCGNU Compiler Collection处理。#import和C语言一样Objective-C使用头文件来包含元素声明这些元素包括结构体、符号常量、函数原型等。C语言使用#include语句通知编译器应在头文件中查询定义而在Objective-C程序中通常会使用#import来实现这个目的。#import可保证头文件只被包含一次而不论此命令实际上在那个文件中出现了多少次。在C语言中程序员通常使用基于#ifdef命令的方案来避免一个文件包含另一个文件而后者又包含***个文件的情况。而在Objective-C中程序员使用#import实现这个功能。#import Foundation/Foundation.h此语句告诉编译器查看Foundation框架中的Foudation.h头文件。Foudation框架处理的是用户界面之下的层Layer中的特性例如数据结构和通信机制Objective-C中的大多数程序都以Foundation框架为基础。NSLog()和字符串Cocoa对其所有函数、常量和类型名称都添加了NS前缀这个前缀告诉程序员和编译器函数来自Cocoa而不是其他工具包。两个不同工具包使用相同标识符时会导致名称冲突而前缀可以预防这个大问题。由于没有集中管理的前缀注册表所以程序员可以任意选用前缀许多人使用他们的姓名首字母或公司名称作为前缀。鉴于Cocoa已占用了NS前缀程序员在为自建的变量或函数名称添加前缀时就不应该再用NS了以免发生混乱。NSLog()这个Cocoa函数和C语言中的printf()很相似它接受一个字符串作为其***个参数该字符串可包含格式说明符如%d还可以接受匹配格式说明符的其他参数。NSLog()函数和printf()函数的区别在于前者添加了一些特性例如时间戳、日期戳和自动附加换行符\n等。beauty注这个特性太有用了我所有的VC程序中都有自己写的一个函数WriteLog()完成的是和NSLog()几乎一样的功能。我们来看下这条NSLog()语句NSLog(Hello, Objective-C!);符号是Objective-C在标准C语言基础上添加的特性之一。双引号中的字符串前有一个符号这表示引用的字符串应该作为Cocoa的NSString元素来处理。大多数Cocoa元素都以非常直接的方式命名名称尽量描述出他们可实现的特性。例如NSArray提供数组NSDateFormatter帮助程序员用不同方式来格式化日期NSThread提供多线程变成工具NSSpeechSynthesizer使用户听到语音。相应的NSString就是Cocoa中的一串字符。NSString类型有许多打包的特性Cocoa在需要字符串时可随时使用它们。下面是一些NSString功能。(1)告知其长度(2)将自身与其他字符串比较(3)将自身转换为整型值或浮点值。还有许多功能是使用C风格字符串无法实现的以后在使用中会做进一步的说明。printf()函数中没有和NSString类型相应的格式说明符因此我们不能将其作为参数传递给printf()函数。而NSLog()函数针对NSString类型添加了%格式说明符从而使得NSLog()函数可以接受相应的参数将其作为NSString使用该字符串中的字符。如果将C风格的字符串而不是专门的NSString的字符串元素传递给NSLog()编译器会给出警告main.m:46: waring: passing arg 1 of NSLog from incompatible pointer type如果要运行这个程序他可能会崩溃。要捕捉这样的问题可以让Xcode总是将警报作为错误来处理。布尔类型 C语言拥有布尔数据类型bool它具有true值和false值。Objective-C提供了相似的类型BOOL它具有YES值和NO值。这两种不同的布尔类型可以在同一个程序中共存但在编写Cocoa代码时要使用BOOL。Objective-C中的BOOL实际上是一种对带符号的字符类型signed char的定义typedef它使用8位存储空间。YES定义为1而NO定义为0使用#define。Objective-C并不将BOOL作为仅能保存YES值或NO值得真正的布尔类型来处理。编译器将BOOL认作8位二进制数YES值和NO值只是一种约定。这引发了一个小问题如果不小心将一个长于1字节的整型值例如short或int值赋给一个BOOL变量那么只有低位字节会用作BOOL值。假设该低位字节刚好为0BOOL值将会是0即NO值。END*声明本文于网络整理版权归原作者所有如来源信息有误或侵犯权益请联系我们删除或授权事宜。戳“阅读原文”我们一起进步