文档章节

OC 自定义 get/set 方法注意点

j
 jackyzouf
发布于 2015/12/29 15:38
字数 439
阅读 155
收藏 0

    今天碰到一个基础问题,需要自定义set方法,本来挺顺利的,定义一个属性

.h文件
@property (nonatomic, strong) NSString *name

.m文件
- (void)setName:(NSString*)name
{
    _name = name;
}

    上面这么写大家应该都能理解,即自定义set方法的标准写法。后来属性的名称改了一下,忘记了改set方法,导致设置属性时走不到自定义方法中,搞了半天,终于找到问题,我想说的不是这个,这个只是起因,要说的是解决问题过程中碰到的一个问题:同时使用自定义 get/set 方法的注意点。

    或许你认为,这还不简单,如下:

.h文件
@property (nonatomic, strong) NSString *name

.m文件
- (void)setName:(NSString*)name
{
    _name = name;
}
- (NSString*)name
{
    return _name
}

    但实际上,xcode7.2给出了如下错误:

/Users/zoubon/testproject/testpro/testpro/testProperty.m:21:5: Use of undeclared identifier '_name'; did you mean 'name'?

    找不到标识符_name,奇怪,_name不就是属性name的别名吗?

    确实是,在自定义单独的一个get或set方法时,上面的写法没有问题,但两个同时存在时,就错了,原因暂不深究,就说解决方法吧,一个久远的关键字:@synthesize

@synthesize first = _first

    很久以前@synthesize就不用了,编译器自动生成属性的get/set方法,想不到同时自定义时,派上了用场,先写到这里吧,或许还有一些原因或方法我没有想到,后面再补充吧


© 著作权归作者所有

j
粉丝 0
博文 4
码字总数 2137
作品 0
南京
私信 提问
Object-C基础-03-点语法

前言 在Java中,我们可以通过"对象名.成员变量名"来访问对象的公共成员变量,这个就称为"点语法"。比如: 1.在Student类的第2行定义了一个公共的成员变量age 1 public class Student {2 pub...

Corwien
2016/03/17
16
0
OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

前一篇说到了Foundation框架中的NSDirctionary类:http://blog.csdn.net/jiangwei0910410003/article/details/41830179,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSExc...

jiangwei0910410003
2014/12/10
0
0
iOS狂暴之路(开始篇)---学习路线总结

一、学习路线规划 现如今移动端的两大平台Android和iOS是风光无限,但是又有谁能够保证这两个平台能够昌盛一辈子呢?谁也不敢保证其中一个在未来几年之后就会成为第二个诺基亚,所以我们现在...

jiangwei0910410003
2016/09/06
0
0
OC-基础总结(一)

OC基础总结 重新回过头看这些基础知识,对许多知识点都有新的认识,拥有坚实的基础才能更快的成长。 #improt OC程序的源文件的后缀名是.m m代表message表示消息机制。main 仍然是OC程序的入口...

xx_cc
2017/04/22
0
0
IOS--set与get方法的理解

目的:为了能让类的成员变量正确的被外接访问,我们需要设置set和get方法。 用property就会自动生成get,set方法的过程中处理好retain,copy,release的关系,而且还可以在main中调用时使用 ja...

Mark_Jiang
2016/01/27
4.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

texlive安装

Installing to: D:/bin/texlive/texlive/2019Installing [001/307, time/total: ??:??/??:??]: adobemapping [2130k]Installing [002/307, time/total: 00:03/08:57]: ae [84k]Installing......

MtrS
58分钟前
2
0
运维规范

命名规范 发布流程 监控告警 故障定位 状态 日志 监控

以谁为师
今天
2
0
约瑟夫环(报数游戏)java实现

开端 公司组织考试,一拿到考题,就是算法里说的约瑟夫环,仔细想想 以前老师将的都忘了,还是自己琢磨把~ package basic.gzy;import java.util.Iterator;import java.util.LinkedList;...

无极之岚
今天
3
0
Kernel字符设备驱动框架

Linux设备分为三大类:字符设备,块设备和网络设备,这三种设备基于不同的设备框架。相较于块设备和网络设备,字符设备在kernel中是最简单的,也是唯一没有基于设备基础框架(device结构)的...

yepanl
今天
3
0
Jenkins 中文本地化的重大进展

本文首发于:Jenkins 中文社区 我从2017年开始,参与 Jenkins 社区贡献。作为一名新成员,翻译可能是帮助社区项目最简单的方法。 本地化的优化通常是较小的改动,你无需了解项目完整的上下文...

Jenkins中文社区
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部