【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 类名 : 父类名

        在这写描述类和类的方法

@end

了解格式了吧    以@interface 开头  以@end 结尾

我们看到声明方法的时候  前面有-这个符号 还有使用+符号的哦~~

开头是-符号 代表该方法为实例方法

开头为+符号 代表该方法为类方法

轮到@implementation部分了

@implementation 类名

{

    //成员声明        

}

//用于实现在@interface中声明的方法

@end

调用类

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值