.h: (header)头文件
.m: (implementation) 实现文件
.mm: 入伙混合了C++代码
同一个项目中可以同时使用OC/C/C++/Swift,都是强类型语言
但是Swift不能写在.m文件中,其他三个语言可以。
入口函数:有且只有一个!
标准写法
Swift把类型写在变量后面,OC把类型写在变量前面
int main(int argc, const char * argv[]) {
return 0;
}
简单数据类型
Swift Objective-C/C/C++
Int int
Double double
Float float
Swift 首字母大写,OC/C/C++首字母小写
对象类型必须加 * 号
创建对象和初始化对象是分开的
//两段式创建方法
NSObject *obj = [NSObject alloc];
obj = [obj init];
//简写形式
NSObject *obj1 = [[NSObject alloc]init];
OC的类
有@
OC的类必须有父类
1.声明部分 .h或.m都可以
@interface A: NSObject
{
//定义变量
}
//定义方法
@end
2.实现部分
@interface A
@end
OC里面NSObject要非常熟悉,所有的类最终都会找到NSObject 父类
1. OC 变量 / 常量
int i = 0; //变量
const int c = 0; //constant(不可变) 常量
2. 函数
//Swift
func add(a: Int, b: Int) -> Int {
return a + b
}
//C/C++
int add(int a, int b) {
return a + b;
}
//OC
//类外:完全等同于C/C++
int add(int a, int b) {
return a + b;
}
//类内
@interface A : NSObject
//函数头部(函数声明) PS:不能写实现
// -: 成员方法 Swift里的static
//+: 类方法 Swift里的func
//函数头部的所有类型,必须放( )内
//每个冒号对应一个参数
- (int)add:a and:(int)b; //add:and 类名
+(int)add:a and:(int)b;
@end
@implementation A
- (int)add:(int)a and:(b) {
return a + b
}
+ (int)add:(int)a and:(b) {
return a + b
}
@end
3. 类型别名
//Swift
typealias MyInt = Int
//OC/C/C++
typedef int MyInt;
4. 闭包
//Swift
typealias AddClosure = (Int, Int) -> Int
//OC
//Block: C语言级别
int (^add)(int, int); //上箭头^
5.扩展
//Swift
//给协议添加默认实现
extension UITabViewDelaegate {
}
//OC
//Category: 类别
@interface NSObject (xxx)
@end
@implementation NSObject (xxx)
@end
//Extension
//只能添加变量, 并且这些变量只能在原始类中使用,没有源码基本没什么用。但是越狱的人有用
@interface NSObject ()
@end
6.协议
//Swift
Protocol AProtocol {
}
//OC
@protocol AProtocol
@required //必须实现
- (void)add;
@opional //可以不实现
- (void)sub;
@end
7.编译预处理指令
//Swift
#if true
#endif
//OC/C/C++
#if1
#endif