文档章节

【OC】一、适应OC

包灬子
 包灬子
发布于 2014/03/11 02:19
字数 740
阅读 46
收藏 1

之前写的有点乱 - - 全删了

---------------------------------------------------

大概了解

第一次看见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机制   

ARCiOS 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要相一致

具体的  后续再说了

© 著作权归作者所有

共有 人打赏支持
包灬子
粉丝 11
博文 37
码字总数 10847
作品 0
无锡
架构师
私信 提问
【OC】八、数字(NSNumber)

之前说过的int float long 等等 都是oc中的基本数据类型 他们都不是对象 但是 有时候 我们需要将这些值作为对象使用 这时候 我们可以使用NSNumber类来存储基本数据类型 NSNumber的多个创建方...

包灬子
2014/03/14
0
0
【OC】【一秒就会】【collectionView 头部吸住功能】

贡献作者 -【XJDomain】 博客XJ: https://my.oschina.net/shengbingli/blog GitHub: https://github.com/lishengbing/XJQRCodeToolDemo 直接使用我的自定义类: 1:tableview有自动头部和底部吸......

XJDomain
2016/11/24
84
0
【OC】九、字符串对象(NSString)

创建一个常量字符串对象 需要在字符串开头放置一个@符号 ,例如: @"Hello OC~~" NSLog 专门用于log日志输出 NSString *str = @"Hello OC~~~"; NSLog(@"%@",str); 上面的代码首先创建字符串对......

包灬子
2014/03/14
0
0
【OC】【直播点赞动画】

贡献作者 -【XJDomain】 博客XJ: https://my.oschina.net/shengbingli/blog GitHub直播地址: https://github.com/lishengbing/XJDomainLive 直接调用这个方法就可以,前提是资源包需要导入你...

XJDomain
2016/12/12
16
0
【OC】【高斯模糊效果】

贡献作者 -【XJDomain】 博客XJ: https://my.oschina.net/shengbingli/blog GitHub直播地址: https://github.com/lishengbing/XJDomainLive UIImage分类: 使用:...

XJDomain
2016/12/12
25
0

没有更多内容

加载失败,请刷新页面

加载更多

Java并发编程

并发与并行 并发指的是同时应对多个事件的能力,并行指的是同时做多件事的能力。 位级并行:32位计算机能够同时处理32位数运算,而8位计算机却要进行多次运算。 指令级并行:表面上看cpu是串...

春哥大魔王的博客
39分钟前
3
0
js数组遍历和对象遍历

数组遍历 for for(var i=0,len=arr.length;i<len;i++){console.log(arr[i]);} forEach - ES5语法,性能比for弱,不能使用break终止循环,不能使用return arr.forEach(function(item,inde......

祖达
58分钟前
3
0
Spring "reg:zookeeper" 的前缀 "reg" 未绑定等类似问题解决方案。

今天同事遇到一个Spring启动加载配置文件时,不识别reg:zookeeper标签的问题。 我查看配置,发现是Spring配置文件的头部没有引入reg标签的命名空间,具体如下图: 所以,以后遇到类似的标签未...

花漾年华
今天
2
0
阿里云领衔云市场

近期,2018年Q4及全年的全球云基础设施服务市场数据新鲜出炉,发布方是美国市场研究机构Synergy Research Group。这个机构是专做电信网络市场情报的公司,成立于1999年,每年都会公布各大公有...

linuxCool
今天
2
0
C++友元函数和友元类(C++ friend)详解

私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行。这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书...

shzwork
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部