分类: iOS平台
2015-03-17 15:03:22
可以在OC代码里混入C/C++代码。OC可以开发mac os平台和ios平台。
3.OC没有包名及命名空间,取而代之的是在类前面加上前缀,如NSString中的NS
关键字以@开头,为了防止和c/c++中的关键字冲突,如@class
字符串也以@开头 如@"hello"
4.self相当于java中的this
nil相当于java中的null
5.OC里面只支持单继承
6.OC不支持垃圾回收,需要手动释放对象
7.新一版本的SDK增加了ARC功能,编译器在编译的时候,他会自动检测没用释放对象的地方,然后自动帮你增加释放对象的语句。
8.OC里面代码的扩展名是.M
9.NSLOG(),结束后自动换行,并且带有时间和项目名信息。
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!”);
NSLog(@"Hello, World!");
}
return 0;
}
2015-03-17 15:22:36.828 基础1[896:303] Hello, World!
2015-03-17 15:22:36.830 基础1[896:303] Hello, World!
代表 Foundation框架里面的Foundation.h文件
12.OC中的类分为两个文件
.h 类的声明文件,用于变量,方法的声明
.m 类的实现文件,用于实现.h中的方法
13.静态方法:用类名调用的方法 前面写+
动态方法:用对象调用的方法 前面写-
14.id可以理解为代表任何对象15.release 释放对象的方法
只能释放一次,否则会报错
16.下面是一个简单的创建类的例子
#import
@interface aaa : NSObject{//成员变量都定义在了{}里面
int age;
int no;
}
-(int)age;
-(int)no;
-(void)setAge:(int)a setNo:(int)b;
@end
#import "aaa.h"
@implementation aaa
//getAge命名不适合OC,OC命名get方法直接写为age
-(int)age{
return age;
}
-(int)no{
return no;
}
-(void)setAge:(int)a setNo:(int)b{
age = a;
no = b;
return ;
}
@end
main.m:
#import
#import "aaa.h"//需要用到aaa对象,就得引用aaa.h
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建一个aaa对象
//调用静态方法alloc来分配内存
aaa *a1 = [aaa alloc];
//调用动态方法init来进行初始化
a1 = [a1 init];
//为了方便可以写成下面这样
aaa *a2 = [[aaa alloc] init];
[a1 setAge:20 setNo:1];
int x = [a1 age];
int y = [a1 no];
NSLog(@"age--%d,no--%d",x,y);
//会报错,因为ARC已经自动添加了释放的语句。
//[a2 release];
//[a1 release];
}
return 0;
}