目录
一、什么是Objective-C?
- 是扩充C的面向对象的编程语言;OC可以完全兼容C语言,在OC中可以随便写C代码,甚至部分的C++代码。(其他类似的面向对象编程语言:C ——> C++;Objective-C;C #)
- Objective-C用来可发 Mac OS X 平台与 iOS 平台的应用程序
Hello world
#import <Foundation/Foundation.h>
//类比#include<> <>引用的是系统库;""引用自己定义的类
int main(int argc,const char * argv[])
{
@autoreleasepool{
//自动释放池
NSLog(@"Hello World!");
}
return 0;
}
Tips:
- 输出语句 NSLog ( @"Hello World!" ); NSLog 是自动换行的,即无需 ‘ \n ’!
- command + R 运行;command + B 编译
二、Objective-C的类
1.新建一个OC类
- 新建一个类时会自动创建.h 与.m 两个文件,其中.h文件只包含声明不实现;.m文件实现声明的方法。
- 创建语句:
Person *per = [[Person alloc]init];
Person *per = [Person new];
BNRStockHolding.h
#import<Foundation/Foundation.h>
@interface BNRStockHolding:NSObject
{
float _purchaseSharePrice;
float _currentSharePrice;
int _numberOfShares;
}
-(void)setPurchaseSharePrice:(float)p setCurrentSharePrice:(float)c...
setNumberOfShares:(int)n;
-(float)costInDollars;
-(float)valueInDollars;
@end
BNRStockHolding.m:
#import"BNRStockHolding.h"
@implementation BNRStockHolding
-(void)setPurchaseSharePrice:(float)p setCurrentSharePrice:(float)c...
setNumberOfShares:(int)n
{
_purchaseSharePrice=p;
_currentSharePrice=c;
_numberOfShares=n;
}
-(float)costInDollars
{
return _purchaseSharePrice*_numberOfShares;
}
-(float)valueInDollars
{
return _currentSharePrice*_numberOfShares;
}
@end
main函数:
#import <Foundation/Foundation.h>
#import "BNRStockHolding.h"
int main ()
{
@autoreleasepool{
printf("My StockHolding:\n");
NSMutableArray *list=[[NSMutableArray alloc] init];
BNRStockHolding *A=[[BNRStockHolding alloc] init];
BNRStockHolding *B=[[BNRStockHolding alloc] init];
BNRStockHolding *C=[[BNRStockHolding alloc] init];
[A setPurchaseSharePrice:12 setCurrentSharePrice:14.5 setNumberOfShares:32];
[B setPurchaseSharePrice:17 setCurrentSharePrice:12.3 setNumberOfShares:25];
[C setPurchaseSharePrice:32 setCurrentSharePrice:27.5 setNumberOfShares:43];
[list addObject:A];
[list addObject:B];
[list addObject:C];
int i=1;
for(BNRStockHolding *t in list)
NSLog(@"第 %d 支股票的购入价为 %.2f,市值为 %.2f。",i++,[t costInDollars],
[t valueInDollars]);
}
return 0;
}
头文件以 @interface 开始,以 @end 结束。注意要在花括号中声明成员变量。
- 实例变量
- 变量属性默认相当于 C++ 中的 private,只能通过实例方法进行存取。
- 变量命名以 _ 开头(后续会提到带 _ 的为实参,不带 _ 的为形参)。
- 实例(对象)方法