第二章對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