.h声明文件 // Integer.h // 02-MRC // // Created by ma c on 15/8/13. // Copyright (c) 2015年. All rights reserved. // #import <Foundation/Foundation.h> @interface Integer : NSObject @property(nonatomic,assign)NSInteger i; -(id)initWithI:(NSInteger) i; -(v…
引用计数和字符串 内存中的常量字符串的空间分配与其他对象不同,他们没有引用计数机制 凡是自定义的对象都有引用计数机制: OC内部中对象分为可变对象(NSMutableString等)和不可变对象(NSString.NSArray等), 不可变对象不适用于引用计数的机制,可变的对象适用引用计数机制.   // main.m // 03-unmutableobject // // Created by ma c on 15/8/13. // Copyright (c) 2015年. All righ…
OC内存管理: 一.引用计数器: Java有垃圾回收机制(Garbage Collection,GC).也就是说当我们创建对象后,不需要考虑回收内存的事,Java的垃圾回收机制会自动销毁该对象,回收它占用的内存. 但OC没有垃圾回收机制,需要开发者手动销毁创建的对象,收回内存.OC中没有垃圾回收机制,而是通过“引用计数器”来管理内存的. 引用计数器:OC中的对象内部都有一个记录有关对象内存状态的整数,把这个整数就叫做引用计数器. 当调用alloc,new,copy等创建新对象时,计数器置为1:当…
手机内存下的类的设计练习: 设计Book类, 1.三个成员变量:    title(书名)author(作者).price(价格) 2.不使用@property,自己完成存取方法(set方法,get方法) 3.加入必要其他的方法 4.并对Book类进行测试   .h声明文件 // Book.h // 引用计数器 // // Created by ma c on 15/8/13. // Copyright (c) 2015年. All rights reserved. // #import <Fo…
当一个所有者(owner,其本身可以是任何一个Objective-C对象)做了以下某个动作时,它拥有对一个对象的所有权(ownership): 1. 创建一个对象.包括使用任何名称中包含“alloc”.“new”.或者“copy”的方法. 2. 保留(retain)一个对象. 一个对象可以有多个所有者,一个所有者也可以拥有多个对象. 相应的,引用计数增减的基本规则是: 1.当所有者创建一个对象时,该对象的引用计数为1. 2.当所有者保留它时,该对象的引用计数加1. 3.当所有者释放(releas…
引用计数与对象树 cheungmine 2013-12-28 0 引言 我们经常在C语言中,用指针指向一个对象(Object)的结构,也称为句柄(Handle),利用不透明指针的技术把结构数据封装成对象,因此如果说在Java中,一切皆是对象的话,那么在C中,万物皆是指针,这么说是不过分的. 然而,C并没有提供垃圾回收等自动化的内存管理设施,我们需要对每一个创建(malloc)出来的对象调用(free),任何时候遗漏了free,或者多调用了一次free,都将造成不可挽回的损失.这也是很多程序员担惊…
基本原理 1. 什么是内存管理 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间.比如回收一些不需要使用的对象.变量等 管理范围:任何继承了NSObject的对象,对其他基本数据类型(int.char.float.double.struct.enum等)无效 Person *p = [[Person alloc] init]; 局部变量放在栈里边 指针*p 动态变量在堆里,如Person对象 堆要手动…
1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较.这一篇文章,我准备为大家介绍一下奇葩的Objective-C语言的语法和使用.这篇文章主要讲Objective-C的理论概念. 2.学习目标 2.1 Objective-C语言面向对象的特性 与C++类比学习,声明定义一个MyObject类,并创建这个类的实例. 2.2 Objective-C语言…
引用计数是一个很好用的技术概念,不要被这个名字吓到了.首先来讲讲引用计数是干嘛的. 引用计数使用场景 有一间黑色的屋子,里边有一盏灯.当第一个人进屋的时候灯会打开,之后的人进来则不用再次打开了,因为已经开过了.当屋子里的所有人离开的时候,灯则会关闭. 我们先定义灯的对象模型: class Light { public void Open() { Log.I("灯打开了"); } public void Close() { Log.I("灯关闭了"); } } 很简单…
1.前言 struct kref结构体是一个引用计数器,它被嵌套进其它的结构体中,记录所嵌套结构的引用计数.引用计数用于检测内核中有多少地方使用了某个对象,每当内核的一个部分需要某个对象所包含的信息时,则该对象的引用计数加1,如果不需要相应的信息,则对该对象的引用计数减1,当引用计数为0时,内核知道不再需要该对象,将从内存中释放该对象. 2.kref结构体 在Linux的内核源码中,struct kref结构体的定义在include/linux/kref.h文件中,结构体定义如下所示: stru…