管理范围:

管理任何继承NSObject的对象,对其他的基本数据类型无 效

本质原因是因为对象和其他数据类型在系统中的存储空间不一样,其它局部变量主要存放于 栈中,而对象存储于堆中,当代码块结束时这个代码块中涉及的所有局部变量会被回收,指 向对象的指针也被回收,此时对象已经没有指针指向,但依然存在于内存中,造成内存泄 露。

内存管理的原则

1)原则 

只要还有人在使用某个对象,那么这个对象就不会被回收; 只要你想使用这个对象,那么就应该让这个对象的引用计数器+1; 当你不想使用这个对象时,应该让对象的引用计数器-1;

2)谁创建,release 

(1)如果你通过alloc,new,copy来创建了一个对象,那么你就必须调用release或者 autorelease方法
(2)不是你创建的就不用你去负责

3)retain,release 

只要你调用了retain,无论这个对象时如何生成的,你都要调用release

4)总结 

有始有终,有加就应该有减。曾经让某个对象计数器加1,就应该让其在最后-1.

:

1)空指针:没有指向任何东西的指针,给空指针发送消息不会报错 关于nil和Nil及NULL的区别:

nil: A null pointer to an Objective-C object. ( #define nil ((id)0) ) nil 是一个对象值。
Nil: A null pointer to an Objective-C class.

NULL: A null pointer to anything else. ( #define NULL ((void *)0) ) NULL是一个通用指针(泛型指针)。

NSNull: A class defines a singleton object used to represent null values in collection objects (which don't allow nil values).

[NSNull null]: The singleton instance of NSNull.

[NSNull null]是一个对象,他用在不能使用nil的场合。

@property

@property int age; 1)生成一个_age 2)生成get和set方法的声明 3)生成 get和set方法的实现

@property (......) int age;

1)内存管理相关参数 

retain:对对象release旧值,retain新值(适用于OC对象类型) assign:直接赋值(默认,适用于非oc对象类型) copy:release旧值,copy新值

验证assign如果作用在对象上,实际上就是直接赋值 //使用@property增强型 生成get和set方法

@property(nonatomic,assign)Car *car; /*

.m文件中实际上生成的是
_car = car; //当对象release后,将无法使用该对象

*/

@property 参数(二)

1)是否要生成set方法(若为只读属性,则不生成

readonly:只读,只会生成getter的声明和实现 readwrite:默认的,同时生成setter和getter的声明和实现

2)多线程管理(苹果在一定程度上屏蔽了多线程操作

nonatomic:高性能,一般使用这个 atomic:低性能,默认

3)setget方法的名称 

修改set和get方法的名称,主要用于布尔类型。因为返回布尔类型的方法名一般以is开头,修改名称一般用 在布尔类型中的getter。

@property(nonatomic,assign, setter=abc:,getter=haha)int age 可以理解为把[psetAge:]------>[pabc:], [page] --------->[phaha];

@property(nonatomic,assign, setter=setVip:,getter=isVip) BOOL vip;

内存管理范围和@property的更多相关文章

  1. OC基础--内存管理中的@property关键字以及其参数

    在上一篇博客中整理的内存管理,管理类的代码量会感觉很大,而且如果对象多的话,感觉到代码有点冗余.下面就介绍Xcode中为我们自动生成内存管理代码的关键字@property 例如:在Person这个类中 ...

  2. iOS 非ARC基本内存管理系列 2-多对象内存管理(3) 利用@property来自动管理内存

    iOS 基本内存管理-多对象内存管理(2)中可以看到涉及到对象的引用都要手动管理内存:每个对象都需要写如下代码 // 1.对要传入的"新车"对象car和目前Person类对象所拥有 ...

  3. [Objective-c 基础 - 3.1] 内存管理

    A.内存存放.retain.release 1.栈内存:存放局部变量,运行超过变量作用域自后编译器自动回收 2.堆内存:存放对象(地址,对象实体) 3.对象的基本结构 (1)引用计数器(4字节):当计 ...

  4. OC内存管理 @property的增强

    涉及到内存管理,只读,多线程等很多功能时,setter和getter方法也就没那么简单了:当然@property依然强大,很好用: 1:内存管理相关参数: *:retain:  (如果是oc对象类型) ...

  5. @property在内存管理中的参数问题

    // // Created by wanghy on 15/8/14. // // /* retain : release旧值,retain新值(用于OC对象),要配合nonatomic使用. ass ...

  6. OC语法7——内存管理之@property参数

    @property的参数: 我们已经知道为了给开发者提供便捷,OC提供了@porperty关键字,它可以自动生成属性的set和get方法. 但是我们又知道,在OC中还面临者对象内存管理的问题,而且我们 ...

  7. iOS 内存管理-copy、 retain、 assign 、readonly 、 readwrite、nonatomic、@property、@synthesize、@dynamic、IB_DESIGNABLE 、 IBInspectable、IBOutletCollection

    浅谈iOS内存管理机制 alloc,retain,copy,release,autorelease 1)使用@property配合@synthesize可以让编译器自动实现getter/setter方 ...

  8. 七.OC基础加强--1.内存管理 2.野指针,内存泄露 3.set方法的内存管理 4.@property参数 5.@class和循环retain的使用 6.NSString的内存管理

    1,内存管理简单介绍 1,为什么要有内存管理? malloc selloc dealloc```需要回头复习 一般的内存 4s 是512m内存:6 是1024m内存: 当内存过大时,会耗尽内存.出现程 ...

  9. iOS 内存管理

    一 . 内存管理 包括内存分配 和 内存清除 1.内存管理的范围 :人和继承于NSObject类的对象都需要进行内存管理,任何非对象类型的对象(基本数据类型 如 int char float doub ...

随机推荐

  1. 用Qt写软件系列五:一个安全防护软件的制作(3)

    引言 上一篇中讲述了工具箱的添加.通过一个水平布局管理器,我们将一系列的工具按钮组合到了一起,完成了工具箱的编写.本文在前面的基础上实现窗体分割效果.堆栈式窗口以及Tab选项卡. 窗体分割 窗体分割是 ...

  2. c#中 HttpWebRequest请求抛异常,基础连接已经关闭: 连接被意外关闭

    在用httpWebRequest模拟请求的时候有时因为服务器等方面做了请求的限制, 在请求会出现基础连接已经关闭: 接收时发生意外错误的错误 一般原因是因为服务器不允许与 Internet 资源建立持 ...

  3. 替换html元素

    html: <div id='divContainer'> <div id='divBeReplaced'>被替换的元素</div> </div> 1. ...

  4. Web API应用架构在Winform混合框架中的应用(4)--利用代码生成工具快速开发整套应用

    前面几篇介绍了Web API的基础信息,以及如何基于混合框架的方式在WInform界面里面整合了Web API的接入方式,虽然我们看似调用过程比较复杂,但是基于整个框架的支持和考虑,我们提供了代码生成 ...

  5. C语言文件方式输入与输出(最简洁方便实用的一种方式)

    freopen("inputfile.txt", "r", stdin); freopen("outputfile.txt", " ...

  6. 【转】php中XML、XSLT的结合运用

    原文:http://blog.csdn.net/bjbs_270/article/details/140253   下面我要讲的是一个简单的从数据库中抽取数据,生成XML文档,使用XSLT转换成HTM ...

  7. java servlet手机app访问接口(四)推送

    一. 服务端DEMO下载及运行. 登录友盟后,浏览器直接输入下面这个URL,直接进入文档开发和DEMO下载页面:http://dev.umeng.com/push/ios/integration(下面 ...

  8. 【Linux_Fedora_应用系列】_5_如何安装XZ Utils 解压缩工具以及利用 xz工具来解压缩.xz文件

    有段时间没有来园子了,今天从 www.kernel.org 上面下载了一个 2.6.32.2 内核压缩包,下载 下来后发现是一个  .xz  结尾的文件,一看与通常的  .gz..bz2等格式不一样, ...

  9. ViewHolder被设计成静态内部类的作用

    当你的内部类不需要依赖于外界的属性或方法等,而又想提供给外界使用,可以采取静态内部类的方式来写 其中static的作用是可以提供给外界调用,比如说类名.内部类这种方式 而ViewHolder的实际是为 ...

  10. Server Tomcat v7.0 Server at localhost was unable to&nbs 报错问题解决

    在eclipse启动tomcat时遇到超时45秒的问题: Server Tomcat v7.0 Server at localhost was unable to start within 45 se ...