第二章对C的扩展
一、构建Hello Objective-C
建立项目后在.m结尾文件内
代码如下:
#import <Foundation/Foundation.h>
int main(int argc, const char *argv[])
{
NSlog(@"Hello, Objective-C");
return(0);
}
代码解读:
#import 使用头文件来包含元素声明,元素可以包括结构体、符号常量、函数原型
#import可以保证头文件只被包含一次,在C语言中一般使用#ifdef命令实现,
Objective-C中也可使用#include实现不过一般都用#import
NSlog()和@"字符串"
NSlog()用于向控制台输出,C语言中使用printf()向控制台输出
@"字符串"表示引用的字符串将作为Cocoa的NSString来处理
必须向NSlog()传递@"字符串",否则将会报警
NSlog()格式化字符串
%d表示数字,%@表示字符串,%s表示非Cocoa规格的字符串
NSLog (@"are %d and %d different? %@", 5, 5, YES);
NSString的功能:
告知其长度
自身一其他字符串比较
将自身转换为整型值或浮点值
BOOL类型
它具有YES(1)和NO(0)值
Objective-C中提供了BOOL类型和C的bool类并存,并且年长10余年
在编写Cocoa代码中必须要使用BOOL类型
main(int argc, const char *argv[])
argv中保存用户提供的参数,argv[0]保存程序名称
argc提供参数的数组长度,为1时没有参数
调出控制台的快捷键:
Start+Shift+R 或者在菜单Run中选Console
BOOL类型示例代码
#import <Foundation/Foundation.h>
// returns NO if the two integers have the same
// value, YES otherwise
BOOL areIntsDifferent (int thing1, int thing2)
{
if (thing1 == thing2) {
return (NO);
} else {
return (YES);
}
} // areIntsDifferent
// given a YES value, return the human-readable
// string "YES". Otherwise return "NO"
NSString *boolString (BOOL yesNo)
{
if (yesNo == NO) {
return (@"NO");
} else {
return (@"YES");
}
} // boolString
int main (int argc, const char *argv[])
{
BOOL areTheyDifferent;
areTheyDifferent = areIntsDifferent (5, 5);
NSLog (@"are %d and %d different? %@",
5, 5, boolString(areTheyDifferent));
areTheyDifferent = areIntsDifferent (23, 42);
NSLog (@"are %d and %d different? %@",
23, 42, boolString(areTheyDifferent));
return (0);
} // main