【OC】一、适应OC
之前写的有点乱 - - 全删了
---------------------------------------------------
大概了解
第一次看见oc语言的时候 有点头大 完全和java C++ 不一样
入门之后就感觉简单了
举个例子 我们来调用下类的一个方法
如果换作以前 用java调用的话 就是这么写
ClassOrInstance.method();
用oc写的话就是下面的代码
[ClassOrInstance method];
比较下 就觉得简单了
--------->
接下来 举些例子
先看下Java的代码
example.setSize(1);
example.setSize(1, 1);
上面的代码 我们用oc来实现
[example setX:1];
[example setX:1 setY1];
创建一个类~
@interface Fraction : NSObject
-(void)print;
@end
@implementation Fraction
-(void)print{
NSLog(@"执行--->print");
}
Fraction类创建完毕
其中 有两部分
@interface部分 用于描述类和类的方法
@implementation部分 用于描述数据,并实现在@interface中声明的方法
---------
接下来看下@interface部分的格式
@interface 类名 : 父类名
在这写描述类和类的方法
了解格式了吧 以@interface 开头 以@end 结尾
我们看到声明方法的时候 前面有-这个符号 还有使用+符号的哦~~
开头是-符号 代表该方法为实例方法
开头为+符号 代表该方法为类方法
轮到@implementation部分了
@implementation 类名
{
//成员声明
}
//用于实现在@interface中声明的方法
调用类
int main(int argc, char *argv[]) {
@autoreleasepool {
Fraction *mFraction = [[Fraction alloc] init];
[mFraction print];
}
}
上面的代码 我们使用了ARC机制
ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。
接下来 我们看下 如果在5.0之前 该怎么处理
int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Fraction *mFracton = [[Fraction alloc] init];
NSLog(@"alloc之后引用计数%d",[mFracton retainCount]);
[mFracton retain];
NSLog(@"retain之后引用计数%d",[mFracton retainCount]);
[mFracton print];
[mFracton release];
NSLog(@"release之后引用计数%d",[mFracton retainCount]);
mFracton = nil;
NSLog(@"设为nil之后引用计数%d",[mFracton retainCount]);
[pool release];
}
看下输出结果
2014-03-11 02:02:42.188 Untitled 2[6248:507] alloc之后引用计数1
2014-03-11 02:02:42.190 Untitled 2[6248:507] retain之后引用计数2
2014-03-11 02:02:42.190 Untitled 2[6248:507] 执行--->print
2014-03-11 02:02:42.191 Untitled 2[6248:507] release之后引用计数1
2014-03-11 02:02:42.191 Untitled 2[6248:507] 设为nil之后引用计数0
不使用arc的话 需要知道下面的规则 (使用ARC的话 也要了解)
1、如果使用alloc或者copy创建对象的话,不要忘记使用release
2、如果没有直接创建对象,不要去release
3、如果没有直接创建对象,但是需要使用时间较长,那可以使用copy或者retain,但是,在使用完成之后需要release对象,并且retain和release要相一致
具体的 后续再说了
转载于:https://my.oschina.net/gejw0623/blog/206999
上一篇: id动态类型和静态类型
下一篇: OC复习