1、Objective-C和Cocoa
Object-C是一种编程语言,Cocoa是函数库。二者容易混淆,就像混淆C#和.NET一样。
2、Objective-C特有
1、减号(或加号):表示一个函数、方法或消息的开始;
如:C++一个方法的实现
void Hello::isInit(bool isinit)
{
_is = isinit;
}
用Objective-C实现就是
-(void)Isinit:(BOOL)isInit
{
}
Objective-C中没有public和private的概念,可以认为全是public。
2、中括号:调用方法
C++中可以如:this->isInit(true);
在Objective-C中,就要写成:[self isInit:YES];
3、NS***
函数库的头部,历史原因。如:NSLog、NSString、NSInteger、NSURL、NSImage。如:NSLog(@"%d",str);
此外还有一些类如:CF、CA、CG、UI等,如CFString Tokenizer、CALayer:表示Core Animation、CGPoint:表示一个点、UIImage:表示图片。
CF:Core Foundation;CA:Core Animation;CG:Core Graphics;UI:iPhone Interface
3、Objective-C的#import和@interface
1、#import可以认为是#include
2、@interface:定义类或方法的开始,如下:
@interface Kids: NSObject {
NSString *kidName;
NSString *kidAge;
}
-(BOOL) isCaughtKid:;
@end
#import “kids.h”
@implementation Kids
-(void) init
{
kidName=@”mykid”;
kidAge=@”15”;
}
-(BOOL) isCaughtKid: { return YES;
}
@end
3、多个参数的写法
(方法的数据类型) 函数名:(参数1数据类型) 参数1数值的名字 参数2的名字:(参数2的数据类型) 参数2值的名字 ...;
如:-(void) setName:(NSString*)firstName second:(NSString*)middleName third:(NSString*)lastName;
实现:-(void) setName:(
NSString*)firstName second:(NSString*)middleName third:(NSString*)lastName
{
_first = firstName;
_second = middleName;
_third = lastName;
}
调用的时候:Name* name = [[Name alloc] init];
[name setName:@"张" second:@"三" third:@"丰"];
[[[MyClass alloc] init:[foo bar]] autorelease];
转换成C#或者Java的语法就是:MyClass.alloc().init(fool.bar()).autorelease();
4、其他
(1)id:类似于C++的auto;
(2)同一个数组可以保存不同对象,NSArray
(3)BOOL:YES表示true,NO表示false
(4)nil:Objective-C里的NULL空,表示空指针
(5)@"字符串":字符串是C字符串,@是把C的字符串转成NSString的一个简写