OC中的属性、方法及内存管理】的更多相关文章

1,内存管理简单介绍 1,为什么要有内存管理? malloc selloc dealloc```需要回头复习 一般的内存 4s 是512m内存:6 是1024m内存: 当内存过大时,会耗尽内存.出现程序闪退. 2.OC内存管理的范围 : 管理任何继承NSObject的对象,对其他的基本数据类型无效. 3.对象类型是程序运行过程中动态分配的,存储在堆区:内存管理主要是对 堆区中的对象的内存管理. 4.OC内存管理的原理 为了防止内存泄露 对象的引用计数器 : 每个OC对象都有自己的引用计数器,是一…
OC中@property属性关键字的使用(assign/weak/strong/copy) 一.assign 用于 ‘基本数据类型’.‘枚举’.‘结构体’ 等非OC对象类型 eg:int.bool等 二. weak 1. 一般应用: UI控件 2. 详细说明: (1)为什么建议UI控件一般使用weak?首先我们从controller来看,controller是被系统用强指针引用着,所以如果 controller 还存在,里面的子控件也会存在,那么controller 强引用着它的view(从 c…
一.多个对象之间的内存管理 1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作) 2.你不想再使用(占用)某个对象,就应该让对象的计数器-1(让对象做一次release) 3.谁retain,谁release 4.谁alloc,谁release 二.set方法的内存管理 内存管理代码规范:1.只要调用了alloc,必须有release(autorelease)   对象不是通过alloc产生的,就不需要release  2.set方法的代码规范 1> 基本数据类…
__proto__: 这个属性是实例对象的属性,每个实例对象都有一个__proto__属性,这个属性指向实例化该实例的构造函数的原型对象(prototype). proterty:这个方法是对象的属性.(据说和一个对象的attr类似,比如dom对象中) prototype:每个构造函数都有一个prototype对象,这个对象指向该构造函数的原型. 对象自身属性方法和原型中的属性方法的区别: 对象自身的属性和方法只对该对象有效,而原型链中的属性方法对所有实例有效. 例子: function bas…
普通方法:关注(代表)对象可以”干什么”,过程中需要实例变量.-(void)show;输出 … 访问属性    属性:属性专门处理实例变量.(程序执行过程当中)    初始化方法:一创建对象(第一时间),给实例变量赋值.    工厂方法:只一个方法,帮我们解决创建对象问题.初始化对象的问题.工厂方法创建对象最简单.(对象达到一定量级) 补:在类方法中,可以调用类中创建的实例的实例方法或实例变量. 算法.设计模式:是人们总结的一种规律,一种思想. 1.单例模式    是一种特殊的工厂方法.    …
干货之前:补充一下可选链(optional chain) class A { var p: B? } class B { var p: C? } class C { func cm() -> String { print("cm") return "abc" } } let insa = A() let insb = B() let insc = C() insa.p = insb //insa.p = nil insb.p = insc let r = in…
1. 什么是内存管理 程序在运行的过程中通常通过以下行为,来增加程序的的内存占用 创建一个OC对象 定义一个变量 调用一个函数或者方法 而一个移动设备的内存是有限的,每个软件所能占用的内存也是有限的 当程序所占用的内存较多时,系统就会发出内存警告,这时就得回收一些不需要再使用的内存空间.比如回收一些不需要使用的对象.变量等 如果程序占用内存过大,系统可能会强制关闭程序,造成程序崩溃.闪退现象,影响用户体验 所以,我们需要对内存进行合理的分配内存.清除内存,回收那些不需要再使用的对象.从而保证程序…
1.对象之间的内存管理: 每个学生都有一本书 book类 @price 学生类  @age @book -------------------- #import "book.h" @interface Student:NSObject @property int age @property BOOK *book;//OC类名与*离不开 @end ------------- Student.m文件 #import "Student.h" @implementation…
1 内存中不连续的页的分配 根据上文的讲述, 我们知道物理上连续的映射对内核是最好的, 但并不总能成功地使用. 在分配一大块内存时, 可能竭尽全力也无法找到连续的内存块. 在用户空间中这不是问题,因为普通进程设计为使用处理器的分页机制, 当然这会降低速度并占用TLB. 在内核中也可以使用同样的技术. 内核分配了其内核虚拟地址空间的一部分, 用于建立连续映射. 在IA-32系统中, 前16M划分给DMA区域, 后面一直到第896M作为NORMAL直接映射区, 紧随直接映射的前896MB物理内存,在…
1. Java在创建对象时,会自动分配内存,并当该对象引用不存在的时候,释放这块内存. 为什么呢? 因为Java中使用被称为垃圾收集器的技术来监视Java程序的运行,当对象不再使用时,就自动释放对象所使用的内存. 垃圾收集器是自动运行的,无须显式地请求垃圾收集器,程序运行时,垃圾收集器会不时检查对象的各个引用,并回收无引用对象所占用的内存. 可以调用System类中的静态gc()方法来运行垃圾收集器. 2. Java语言并不要求JVM有gc,也没有规定gc如何工作. Java垃圾回收机制是为所有…