Object-C在Nil上调用方法

在Object-C中,nil对象的作用等同于很多其它语言的NULL指针。不同的地方在于,在nil上调用方法不会导致程序崩溃或抛出异常。

这种技术被用在很多地方,但是对于我们来讲,最主要的就是我们不用在调用一个对象的方法之前检查该对象是否为空。如果你调用了一个nil对象的方法并且该方法有返回值的话,你会得到一个nil返回值。

我们也可以用它来稍微改进一下我们的dealloc方法:

- (void)dealloc

{

self.caption = nil;

self.photographer = nil;

[super dealloc];

}

可以这样做是因为当我们将nil赋值给一个实例变量,设置器(setter)会释放旧对象并且保留(retain)nil对象。这种做法对于dealloc来说更好一些,因为这样做避免了让变量指向一个随机的数据,而这个数据又恰好是另外一个对象。

注意,我们在这里使用了self.语法,这表示我们使用的是setter,它会进行内存管理。如果我们仅仅是直接设置值,像下面这样,那就回产生内存泄漏:

caption = nil;

更多相关文章
  • jquery源码;是怎么实现直接调用$()函数原型上的方法的
    1:当我们调用jQuery()方法时:就会先加载return new jQuery.prototype.init();此代码返回一个init()对象;属于jQuery()对象.jQuery.prototype.init.prototype=jQuery.prototype;这句话让初始化函数init ...
  • 调用无返回值.无参数的方法     假如有一个BaseEntity类,我们要使用反射调用BaseEntity类中的A方法:首先我们必须要先声明一个Type类的实例: Type baseType=typeof(BaseEntity);     再来我们要再声明一个MethodInfo类的实例,用来寻找 ...
  • 今天项目经理发下任务,需要测试 20 个接口,看看推送和接收数据是否正常.因为对接传输的数据是 xml 格式的字符串,所以我拿现成的数据,先生成推送过去的数据并存储到文本,以便验证数据是否正确,这时候要批量调用这些同名方法,我觉得这里可以发展成有潜力的代码. 推送比较好做数据,队友们都写好代码,但是 ...
  • 在一个silverlight工程里加载另一个xap之前我已经有写过,不过如果加载后相互调用就没有写到,所以补充说明一下加载后两个silverlight中相互调用方法和元素的使用. 注意:请先参考本网站的<Silverlight3 加载其他xap>文章,再结合以下内容使用! 1.在主程序里 ...
  • 2. 重载的实现方法::argus参数 vs  默认值.可选参数法 可选参数 Php通过func_num_args();js通过argus参数 Python通过默认值 一个语言选择重载或者可选参数两者中的一种就是了.像C# 4这样同时支持这两种形式的,就比较容易混淆. 著作权归作者所有. Pytho ...
  •     有半个月没写博客了,刚好前段时间遇到反射调用泛型方法的问题!所以今天我就跟大家来分享下如何反射调用方法.    调用无返回值.无参数的方法     假如有一个BaseEntity类,我们要使用反射调用BaseEntity类中的A方法:首先我们必须要先声明一个Type类的实例:     Typ ...
  • WebService服务调用方法介绍
    1 背景概述 由于在项目中需要多次调用webservice服务,本文主要总结了一下java调用WebService常见的6种方式,即:四种框架的五种调用方法以及使用AEAI ESB进行调用的方法. 2 预期读者 数通畅联内部员工 广大计算机爱好者 3 名词解释 Web Service也叫XML We ...
  • public class InvokeTester { public InvokeTester() { } String str; public InvokeTester(String str) { this.str = str; } public int add(int param1, int p ...
一周排行
  • 定义 用一个中介对象封装一系列的对象交互,中介者使用各个对象不需要显式地相互调用,从而达到耦合松散,而且可以独立地改变它们之间的交互. mediator 几个对象 Mediator 抽象中介者角色:定义统一接口,用于 ...
  • 安装完成后,感觉有点迷糊,在网上查找的方法:方法一:#准备工作 copy windows系统下的 simsun字体 (路径是c:\windows\fonts\simsun.tff) 到 /usr/share/font ...
  •  最近需要抓取部分网页股票板块数据,使用的一些开源工具页面抓取:HttpComponent中的HttpClient4.1: http://hc.apache.org/downloads.cgi页面解析:HttpPar ...
  • OSPF网络故障处理案例
    OSPF网络故障处理案例网络拓扑如图11.1所示.网络规划如下:nR1和R2的互联地址为: ...
  • 创建域就是安装一台域控制器(DC),其实也就是在一台服务器上安装活动目录,将这台计算机安装成(DC). 一台计算机要安装成DC,必须具备以下6个条件: 1.安装者必须具备本地管理员权限2.操作系统版本必须满足条件(W ...
  • CABackup系列(6)——使用VTL2
    (一).格式化CA ARCserve Backup 会在备份作业期间自动对空白介质进行格式 ...
  • 1.下载IEWebControls.exe并安装,在C:\Program Files\IE Web Controls\下有文件build.bat2.使用开始->所有程序->Miscrosoft Visua ...
  • MIP是"一对一"的双向地址翻译(转换)过程.通常的情况是:当你有若干个公网IP地址,又存在若干的对外提供网络服务的服务器(服务器使用私有IP地址),为了实现互联网用户访问这些服务器,可在Inte ...
  • Squid三种代理方式的实现及ACL
                        Squid三种代理方式的实现及ACL操作环境:(R ...
  •     "十年寒窗不算苦,求职就业才辛苦",这是大学毕业生的真实写照,多年求学终获一纸文凭,到头来还是换的四处奔波.10多年的求学费用十几万之多,但换来的却是月收入不足千元,而且还极不稳定!原因很 ...