问题标签 [accessor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5217 浏览

objective-c - 在 init 和 dealloc 方法中有效使用访问器?

我现在从几个来源(stackoverflow.com、cocoa-dev、文档、博客等)听说在 init 和 dealloc 方法中使用访问器和设置(foo、setFoo:) 是“错误的”。我了解,如果您这样做,则极有可能混淆正在观察该属性的其他对象。(这里给出一个简单的例子)

但是,我不得不说,我不同意这种做法,原因如下:

新的 Objective-C 运行时(iPhone 上的运行时和 10.5 中的 64 位运行时)允许您声明属性而无需声明相应的 ivar。例如,以下类将在 10.5 或 iPhone(设备,而不是模拟器)上编译得很好:

了解以上是一个完全有效的 Objective-C 类,假设我决定编写一个初始化程序,并且出于内存管理的目的,一个 dealloc 方法(因为 GC 在 iPhone 上不可用)。我读过的关于初始化器和释放的所有内容都会引导我编写以下两种方法:

但是,根据文档和流行观点,这是“错误的”。所以我的问题是这样的:

  1. 我应该如何在不使用访问器的情况下初始化 someObject ?您可能会说编译器(或运行时或其他)将确保 someObject 已设置为 nil,但我认为依赖它是不恰当的行为。拥有良好的 C 语言背景,由于没有正确初始化变量,我已经看到了相当多的错误,这似乎没什么不同。
  2. 如果我不应该在 dealloc 方法中使用访问器,我该如何释放 someObject?

如果其中任何一个的答案是“你不能”,那么在你的 init 和 dealloc 方法中使用访问器有什么不好呢?

0 投票
3 回答
1093 浏览

objective-c - Objective C - 如果没有什么不同,则使用访问器

在目标c中,如果使用getter和直接访问ivar做完全相同的事情,getter中没有延迟加载代码,它所做的只是返回ivar,你仍然使用访问器还是直接访问ivar,因为有没有不同?为什么?

编辑:我在课堂上谈论。

0 投票
4 回答
2135 浏览

objective-c - 使用@synthesize 时如何提供访问器方法的额外自定义实现?

我想在访问和更改属性时触发一些代码。我在我的 ivars 代码中使用@property和。@synthesize属性被保留,所以我想保留由@synthesize.

但是,我假设@synthesize告诉编译器在 where 生成访问器方法代码@synthesize is,所以大多数情况下在代码的顶部,对吗?

当我有一个属性时foo,我会得到-setFoo-foo方法。然后我可以制作这样的方法,以便在更改属性时执行更多自定义代码吗?

现在这是一个问题。如何执行第一个?我不想在这里有一个不同的名字。有没有办法让@synthesize指令为 getter 和 setter 方法创建其他名称,然后我可以轻松调用它们?而且我仍然可以使用点语法来访问它们吗?

0 投票
3 回答
220 浏览

c# - 在从 Java 迁移到 C# 时,我应该了解哪些访问器类

我是一名 Java 编程人员,现在也在用 C# 编写。我见过由 VS 测试生成软件生成的 Accessor 类(以从测试访问私有成员或函数)。我应该故意创建访问器吗?如果是,为什么

0 投票
10 回答
1558 浏览

c# - 最佳实践:访问器属性还是无参数方法?

哪个是更好的做法,为什么?

或者

0 投票
1 回答
568 浏览

objective-c - 修改 NSMutableDictionary 实例变量的正确方法?

我在类的@interface 部分中声明了一个Objective-C NSMutableDictionary,带有getter/setter 方法,如下所示:

在我的一些 @implementation 方法中,我想修改dict。我想坚持标准的 Obj-C 习语并“适当地”修改它。可以这样修改它,使用getter而不是setter:

...或者有更好的方法吗?

0 投票
4 回答
1121 浏览

c# - 使同一程序集中的一个对象只能被另一个对象访问?

每个业务对象都有一个包含 sql 调用的匹配对象。我想以一种只能由匹配的业务对象使用的方式限制这些 sql 对象。如何做到这一点?

更新

Greg 提出了关于可测试性的观点。由于 SqlObjects 将包含非常特定于业务流程的 sql,我不希望它们在多个业务对象中重用。(基本的 CRUD 操作都是代码生成的)有没有办法让业务程序集中的一个业务对象可以访问 SqlObjects(如 yshuditelu 和 Greg Beech 所示)并将 SqlObjects 暴露给单元测试程序集?

0 投票
3 回答
1024 浏览

ruby-on-rails - 为什么 attr_accessor 会破坏 Ruby on Rails 中此模型中的现有变量?

我最近被这个咬了,准确地知道发生了什么事情会发生这种情况会很有用,所以其他人会避免这个错误。

我有一个模型用户,其架构如下:

在 user.rb 类中,我有一个 attr_accessor 用于三种方法:

现在在我的用户控制器中,如果我有以下方法:

当我尝试使用此参数哈希中的内容创建新用户时:

返回的对象对于country,town和 postcodepostcode值有空字符串,就像这样。

我可以看出 attr_accessor 方法正在破坏 Active Record 现有的访问器方法,因为当我将它们取出时一切正常,因此解决方案相当简单——只需取出它们即可。

但是这里到底发生了什么?

我在Rails API 文档中查看 Active RecordRuby 自己的文档 aboutattr_accessor,但我仍然对attr_accessor这里的破坏方式有点模糊。

有没有人能够提供一些启示来阻止其他一些可怜的灵魂对此犯规?

0 投票
1 回答
3332 浏览

visual-studio-2008 - 使用访问器进行单元测试

这是一个两部分的问题。

背景:我们将 C# 应用程序从 VS2005 移至 VS2008,并在此过程中将应用程序从 .net 2.0 移至 .net 3.5。除了单元测试之外,过渡进展顺利。

第一:单元测试框架是基于 Visual Studios 还是 .NET?

第二:这个问题源于我们在单元测试中遇到的问题。我们有内部类需要访问器才能对它们进行单元测试。当应用程序在 VS2005 中时,所有访问器都是通过右键单击所需的类并选择“创建私有访问器”来自动创建的——这个访问器被放置在 VSCodeGenAccessors.cs 中。现在在迁移到 VS2008 和 .net 3.5 之后,访问器被放置在一个新创建的文件夹“测试引用”中,并且为每个访问器创建一个文件 (.accessor)

为了一致性起见,我如何将访问器生成到 VSCodeGenAccessors.cs 中。

谢谢!

0 投票
5 回答
241 浏览

c# - 获取和设置问题

这是演示我的问题的代码(都在同一个命名空间中):

我永远不会做doSomething(),我真的很想。我究竟做错了什么?这些值都会正确设置,但我似乎从未进入 BGroup 的设置部分。

谢谢