1矿瘦、Objective-C Hello World程序
import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@"Hello, World!");
}
return 0;
}
(1)Objective-C的后綴名為.m;
(2)在Xcode中,所有的(Objective-C, C++)編譯工作默認由LLVM處理
(3)OC使用頭文件來包括結(jié)構(gòu)體、符號常量和函數(shù)原型等元素的聲明
(4)#import保證頭文件只被包含一次,無論此命令在該文件中出現(xiàn)了幾次
(5)#inport <Foundation/Foundation.h>告訴編譯器查找Foundation框架中的Foundation.h頭文件
(6)#inport <Foundation/Foundation.h>來包含主文件,就能獲取Foundation框架的所有功能
(7)NSLog(@"這個語句是在控制臺打印一句話");//可以包含格式說明符,跟printf類似
(8)NS前綴代表使用的是Cocoa工具包
(9)@符號代表引號內(nèi)的字符串應(yīng)作為Cocoa的NSString元素來處理
2、布爾類型BOOL
(1)具有兩個值:YES, NO
(2)可在同一個程序中與C語言的bool類型共存典蝌,但編寫Cocoa代碼,只能使用BOOL
(3)實際上是一中對帶符號的字符類型(signed char)的類型定義(typedef),它使用8位的存儲空間头谜,通過#define指令把YES定義為0骏掀,NO定義為0.
(4)Objective-C并不會將BOOL作為僅能保存YES或NO值得真正布爾類型來處理,編譯器仍將BOOL認作8位二進制數(shù)柱告。
(5)如果將一個大于1字節(jié)的整數(shù)值賦給一個BOOL變量截驮,那么只有低位字節(jié)會 用作BOOL值,如果低位字節(jié)剛好為0(轉(zhuǎn)換成十六進制)末荐,BOOL值將會被認作為0侧纯,即NO值
(6)不要將BOOL值與YES值進行比較,直接與NO比較一定是安全的甲脏,因為C語言中的假值就只有一個0
3眶熬、聲明函數(shù)原型
(1)與C語言一樣,在main函數(shù)之后定義的函數(shù)必須在main函數(shù)之前進行聲明函數(shù)原型
(2)返回NSString類型:
NSString *boolString(BOOL yesno){
if(yesno)
return @"YES";
return @"NO";
}
(3)NSLog(@"are %d and %d different? %@",23, 42, boolString(they));//%@代表 NSString的格式說明符
4块请、Xcode添加命令行參數(shù)
(1)Product -> Edit Scheme -> Arguments
5娜氏、一次性初始化結(jié)構(gòu)體的所有元素
(1)ShapeRect rect0 = {0, 0, 10, 30};
6姨拥、定義接口
(1)@interface Circle : NSObject // 這里沒有分號衣吠, @代表是對C語言的擴展,@interface Circle代表這是新類的接口弄息,NSobject代表Circle類是基于NSobject類
{
@private
ShapeColor fillColor;
ShapeRect bounds;
}
- (void) setFillColor: (ShapgeColor) fillColor; //方法聲明
- (void) setBounds: (ShapeRect) bounds;
- (void) draw; //無參數(shù)無返回值
@end
7海渊、調(diào)用方法的方法
(1)[circle setFillColor: kRedColor];
(2)[textThing setStringValue: @"hello there" color: kBlueColor];
8绵疲、實現(xiàn)類
(1)@inplementation Circle //這里沒有分號
- (void) setFillColor: (ShapeColor) c
{
fillColor = c;
// 在Objective-C中調(diào)用方法時,一個名為self的秘密隱藏參數(shù)將被傳遞給接收對象臣疑,而這個參數(shù)引用的就是該接收對象
self->fillColor = c;
}
- (void) setBounds: (ShapeRect) b //參數(shù)名可以不同
{
bounds = b;
}
- (void) draw
{
NSLog(@"drawing a circle at (%d %d %d %d) in %@", bounds.x, bounds.y, bounds.width, bounds.height, colorNanme(fillColor));
//draw方法使用隱藏的sel參數(shù)查找其實例變量的值
}