遍历构造器的内存管理

a.遍历构造器方法内部使用autorelease释放对象

b.通过遍历构造器生成的对象.不用释放.

内存的管理总结

1.想占用某个对象的时候,要让它的引用计数器+1(retain操作)

2.当不想再占用某个对象的时候,要让它的引用计数器-1(release操作)

3.谁alloc谁release,遍历构造器使用autorelease

另:当一个属性遵循了协议的时候(该属性就是代理),这时使用内存组的assign修饰.

多态:父类指针 指向 子类对象

没有继承就没有多态

父类可以指向子类对象,这个时候会有局限性,就是父类不能调用子类的特有的方法.

———————具体的retain copy assign的内部实现———————

Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject
@property (nonatomic,retain)NSString *name;
@property (nonatomic,assign)NSInteger age;
@property (nonatomic,copy)NSString *color; -(id)initWithName:(NSString *)name
andAge:(NSInteger)age
andColor:(NSString *)color;
+(id)personWithName:(NSString *)name
andAge:(NSInteger)age
andColor:(NSString *)color; @end

Person.m

#import "Person.h"

@implementation Person
@synthesize name=_name,age=_age,color=_color; //retian
-(void)setName:(NSString *)name{
if (_name!=name) {
[_name release];
_name=[name retain];
}
}
-(NSString *)name{
return _name;
} //assign
-(void)setAge:(NSInteger)age{
_age=age;
}
-(NSInteger)age{
return _age;
} //copy
-(void)setColor:(NSString *)color{
if (_color!=color) {
[_color release];
_color=[color retain];
}
}
-(NSString *)color{
return _color;
} -(id)initWithName:(NSString *)name
andAge:(NSInteger)age
andColor:(NSString *)color{
self=[super init];
if (self) {
_name=name;
_age=age;
_color=color;
}
return self;
}
+(id)personWithName:(NSString *)name
andAge:(NSInteger)age
andColor:(NSString *)color{
return [[Person alloc]initWithName:name andAge:age andColor:color];
} -(void)dealloc{
[_name release];
[_color release]; [super dealloc]; } @end

版权声明:本文为博主原创文章,未经博主允许不得转载。

OC基础:内存(进阶):retain.copy.assign的实现原理 分类: ios学习 OC 2015-06-26 17:36 58人阅读 评论(0) 收藏的更多相关文章

  1. OC基础知识总结 分类: ios学习 OC 2015-06-26 17:58 58人阅读 评论(0) 收藏

    //OC: Objective-C, 面向对象的C语言 //OC与C的区别 //1.OC是C的超集, C语言的所有语法都可以在OC中使用 //2.OC是面向对象 //3.OC是一门运行时语言 //4. ...

  2. OC基础:属性.点语法.KVC 分类: ios学习 OC 2015-06-24 17:24 61人阅读 评论(0) 收藏

    属性:快速生成setter和getter 属性也包括:声明和实现 1.属性的声明写在.h中 格式:@property 数据类型 变量名; 如果实例变量一致的时候,属性的声明可以合并,每一个属性之间使用 ...

  3. OC基础:NSString NSNumber 分类: ios学习 OC 2015-06-17 17:55 77人阅读 评论(0) 收藏

    OC中的基本数据类型 NSString  在64位系统下,相当于long,在非64位系统下,想当于int. CGFloat   在64位系统下,相当于double,在非64位系统之下,想当与float ...

  4. OC基础:实例变量和成员变量的区别 分类: ios学习 OC 2015-06-14 17:59 16人阅读 评论(0) 收藏

    摘要:  Objective-C  引入了"实例变量"的概念,但同时, 也经常出现 "成员变量"的声音. 到底什么是实例变量,什么是成员变量,二者的区别是什么呢 ...

  5. C/C++的四大内存分区 分类: C/C++ 2015-05-09 01:36 163人阅读 评论(0) 收藏

    导读 正确的理解C/C++程序的内存分区,是合格程序猿的基本要求. 网络上流形两大版本内存分区,分别为: 1. 五大内存分区:堆.栈.全局/静态存储区.自由存储区和常量存储区. 2. 五大内存分区:堆 ...

  6. 共享内存+互斥量实现linux进程间通信 分类: Linux C/C++ 2015-03-26 17:14 67人阅读 评论(0) 收藏

    一.共享内存简介 共享内存是进程间通信中高效方便的方式之一.共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针,两个进程可以对一块共享 ...

  7. 8大排序算法图文讲解 分类: B10_计算机基础 2014-08-18 15:36 243人阅读 评论(0) 收藏

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序. ...

  8. C语言基础总结 分类: iOS学习 c语言基础 2015-06-11 10:08 23人阅读 评论(0) 收藏

    //欲练此功必先自宫!!!     //第一天:C语言的基础     //进制     //2进制, 10进制, 8进制, 16进制     //注:8进制数前加0, 16进制数前加0x        ...

  9. OC基础:内存(内存管理) 分类: ios学习 OC 2015-06-25 16:50 73人阅读 评论(0) 收藏

    自动释放池: @autoreleasepool { } 内存管理机制       谁污染,谁治理 垃圾回收机制:gc(Garbage collection),由系统管理内存,开发人员不需要管理. OC ...

随机推荐

  1. poj 2385 Apple Catching 基础dp

    Apple Catching   Description It is a little known fact that cows love apples. Farmer John has two ap ...

  2. MongoDB(课时11 嵌套集合)

    3.4.2.6 嵌套集合运算 MongoDB数据库里每个集合数据可以继续保存其它的集合数据.例如:有些学生信息中需要保存家长信息. 范例: 增加数据 db.students.insert({" ...

  3. Flutter学习笔记(三)-- 事件交互和State管理

    先来看看准备界面: image.png 目标是修改图中红色实线框中的喜欢和不喜欢的五角星的修改,以及数字的修改. 在修改之前,有必要先了解一些相关的信息. 知识点 前面简单的提到过,有些Widget是 ...

  4. Linux服务器上监控网络带宽的18个常用命令和工具

    一.如何查看CentOS的网络带宽出口 检查维护系统的时候,经常会要查看服务器的网络端口是多大的,所以需要用到Linux的一个命令. 如何查看CentOS的网络带宽出口多大?可以用下面的命令来查看. ...

  5. UVA - 11853 Paintball(dfs)

    UVA - 11853 思路:dfs,从最上面超过上边界的圆开始搜索,看能不能搜到最下面超过下边界的圆. 代码: #include<bits/stdc++.h> using namespa ...

  6. English trip -- VC(情景课)4 B Parts of the body 身体部位

    xu言: ... Words eye  读音同 I     眼睛 nose 鼻子 ear   耳朵 tooth  牙齿 mouth  嘴 hair 头发 eyebrow  眉毛 cheek  脸颊 n ...

  7. android--------ListView和ExpandableListView的侧滑删除操作

    本案例主要实现了ListView和ExpandableListView的侧滑删除操作功能 效果图: ListView的Adapter类 private class SlideAdapter exten ...

  8. linux 查找

    linux下的查找命令有很多,常用的有which.whereis.locate.find.平时在网上搜索一些教程的时候,经常会有让使用这四条命令中的一条去查找一些东西,但是经常这次说用which,下次 ...

  9. 『cs231n』作业3问题4选讲_图像梯度应用强化

    [注],本节(上节也是)的model是一个已经训练完成的CNN分类网络. 随机数图片向前传播后对目标类优化,反向优化图片本体 def create_class_visualization(target ...

  10. 『OpenCV3』处理视频&摄像头

    在opencv中,摄像头和视频文件并没有很大不同,都是一个可以read的数据源,使用cv2.VideoCapture(path).read()可以获取(flag,当前帧),对于每一帧,使用图片处理函数 ...