为什么对实例变量使用下划线,而不对它的相应属性使用下划线? [英] Why do you use an underscore for an instance variable, but not its corresponding property?

查看:28
本文介绍了为什么对实例变量使用下划线,而不对它的相应属性使用下划线?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能的重复:
cocoa Objective-c 类中变量前面的下划线是如何工作的?

我是iphone开发的新手.我正在研究iphone的录音.我从Apple下载了speak here"示例程序.它由LevelMeter.h文件组成,其中

I am new to iphone development.I am doing research on voice recording in iphone .I have downloaded the "speak here" sample program from Apple.It consist of LevelMeter.h file, in which

 @interface LevelMeter : UIView {

CGFloat                     _level, _peakLevel;

   }

属性设置为

 @property                      CGFloat level;
 @property                      CGFloat peakLevel;

声明一个像_level这样的变量并将其属性设置为level有什么用.请解释一下.谢谢.

What is the use of declaring a varible like _level and setting its property as level.Please explain me.Thanks.

推荐答案

提醒

@property 指令等效于声明一个 setter 和一个 getter.在level的情况下,

Reminder

The @property directive is equivalent to declaring both a setter and a getter. In the case of level,

@property CGFloat level;

可以替换为

- (CGFloat)level;
- (void)setLevel:(CGFloat)v;

你的问题

为什么要为名为 _level 的变量声明一个名为 level 的属性,为什么首先要使用前导 _ 命名变量?我不知道.

Your question

Why declare a property named level for a variable named _level and why name a variable with a leading _ in the first place? I don't know.

它是如何工作的,在 LevelMeter.m 中有回答:

How it works, is answered in LevelMeter.m:

- (CGFloat)level { return _level; }
- (void)setLevel:(CGFloat)v { _level = v; }

这篇关于为什么对实例变量使用下划线,而不对它的相应属性使用下划线?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆