码迷,mamicode.com
首页 > 其他好文 > 详细

OC学习之进阶

时间:2015-11-13 14:43:57      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:

1.内存管理

? ? ? ? 概念,当alloc出一个对象,其构成为 对象自身+retainCount ,这个retainCount是对象计数器 。判断对象要不要回收的唯一依据(存在一种例外:对象值为nil时,引用计数为0,但不回收 空间)就是计数器是否为0,若不为0则存在。对象被销毁前会给系统发送dealloc,当然可以重写此函数。dealloc不能直接调用,如果意见被回收过的对象再次使用会报野指针(Zombie)。在diagnostics中可以开启Zombie监测。

? ? ? ? Objective-C??供了三种内存管理方式:MannulReference Counting(MRC,手动管理,在开发 iOS4.1之前的版本的项目时我们要 自己负责使用引用计数来管理内存,比如要手动 retain、release、autorelease 等,而在其后 的版本可以使用 ARC,让系统自己管理内存。) automatic reference counting(ARC,自动引用计数,iOS4.1 之后推出的) garbage collection(垃圾回收)。iOS不支持垃圾回收; ARC作为苹果新??供的技术,苹果推荐开发者使用ARC技术来管理内存;

? ? ? ? 想要手动调用retain,release必须关闭ARC . 在build setting中可以设置。

? ? ? ??技术分享

? ? ? ? 官方强烈建议不需要手动托管资源计数与释放,那便略过。ARC不是垃圾回收,是编译器特性不是运行时特性。ARC判定是否回收的规则,至少有一个强指针指向对象就不会执行回收。

?

2.Category 和 C#exten class差不多,都是在不更改当前类的前提下,新增类扩展当前类的api 。

3.神奇的block,apple推荐使用的数据类型。使用场景广泛,用来保存一段代码恰当的时机调用。

4.@protocol 协议,这东西与C#的abstract保持一致,其实没什么好说的。其中有两个关键字 @required 必须实现此方法; @optional 可以选择不实现;众所周知接口可以多继承oc也不例外。

5.代码 暂时就那么多吧,后面再接着写

#import <Foundation/Foundation.h>

?

//声明一个协议也就是c#中的接口

@protocol IprototolTest

?

@required -(void)ShowTxt :(NSString*) str;

@optional -(void)ShowTxtNoParams;

?

@end

?

@interface TestClass:NSObject <IprototolTest>

{

? ? @public

? ? int name;

}

-(void) PrintName:(NSString*) name;

?

@end

?

?

@implementation TestClass

?

-(void)PrintName:(NSString *)name

{

? ? NSLog(name);

}

?

-(void)ShowTxt:(NSString *)str

{

? ? NSLog(str);

}

?

@end

?

@interface TestClass (testCategory)

-(void)SayHello;

@end

@implementation TestClass(testCategory)

?

-(void)SayHello

{

? ? NSLog(@"helloworld");

}

?

@end

?

?

?

void (^testBlockMethod)(int, NSString*) = ^ (int x, NSString* y)

{

? ? NSLog(@"%d +++++ %@", x , y);

};

?

int main(int argc, const char * argv[]) {

? ? @autoreleasepool {

? ? ? ? TestClass *s = [[TestClass alloc] init];

? ? ? ? [s SayHello];

?? ? ? ?

? ? ? ? testBlockMethod(1001,@"testBlock ...");

?? ? ? ?

? ? }

? ? return 0;

}

OC学习之进阶

标签:

原文地址:http://www.cnblogs.com/Keyle/p/4962010.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!