iphone - 为什么对实例变量使用下划线,而不是其对应的属性?

标签 iphone objective-c cocoa cocoa-touch

<分区>

Possible Duplicate:
How does an underscore in front of a variable in a cocoa objective-c class work?

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

 @interface LevelMeter : UIView {

CGFloat                     _level, _peakLevel;

   }

属性设置为

 @property                      CGFloat level;
 @property                      CGFloat peakLevel;

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

最佳答案

提醒

@property 指令等同于同时声明 setter 和 getter。在级别的情况下,

@property CGFloat level;

可以替换为

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

你的问题

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

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

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

关于iphone - 为什么对实例变量使用下划线,而不是其对应的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2371489/

相关文章:

iphone - Objective-C 自定义二传手

ios - 如何在 iOS 中使用 Google Firebase 向特定用户发送推送通知?

objective-c - 处理包含文本字段和 ScrollView 的 Cocoa View 中的选项卡

objective-c - 表明返回的实例是派生类

iphone - UITableView 委托(delegate)方法

iphone - 如何在 iOS 中发送 NTLM 请求

iOS gamekit/蓝牙数据流

ios - 是否可以禁用点击自定义 UITableViewCell 的附件 View 部分?

objective-c - 使 NSTextFieldCell 中的 URL 可点击

iphone - 在 iPhone 的 sqlite 中触发更新语句时出现问题