问题标签 [class-extensions]
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.
objective-c - 类扩展中的静态变量和变量有什么区别?
静态变量“声明一个静态变量将其范围限制为仅类,并且仅限制在文件中实现的类的一部分”(Apple doc)。
而且我认为在类扩展中定义的变量仅在定义它的类中具有限制范围。
那是相似的!
类扩展中的静态变量和变量有什么区别?
objective-c - 使用类扩展将 ivar 和属性添加到类
我正在尝试将实例变量和属性添加到现有类。我想这样做是为了扩展一个开源库的基类,而不需要修改源代码(以便于代码管理)。
文件说_
与常规类别不同,类扩展可以将自己的属性和实例变量添加到类中。如果您在类扩展中声明属性 [...],编译器将在主类实现中自动合成相关的访问器方法以及实例变量。
我试图在一个测试应用程序中做到这一点。我有一个空课ClassA
:
类A.h
类A.m
然后我添加了一个扩展:
ClassA+Ext.h
最后在我的AppDelegate
我简单地初始化一个ClassA
并尝试设置然后记录name
.
这编译并运行,但我在控制台上收到此错误:
该名称未记录。如果我设置断点并检查ClassA
实例,它没有name
ivar。我究竟做错了什么?这真的不可能吗?
objective-c - doxygen 目标 c uml 关联,用于具有类扩展的非公共关联
Doxygen 版本 1.8.3.1-20130209
喜欢使用 Doxygen 生成类图等。只需针对一些具有使用其他类的 @property 声明的类扩展的 Objective C 运行它。它似乎没有将这些作为类图的 UML 关联。
无论如何我们可以让 Doxygen 看到这个吗?较新版本?
objective-c - 何时将类扩展中的属性添加到 Objective C 中的类中?
我的印象是,Objective C 中的类扩展只是匿名类别。但是,你可以为这些类扩展添加属性,这在类别中是不可能的,所以我有点困惑:
类扩展是如何实现的?作为类别?那你为什么允许向它添加 iVars 呢?何时将类扩展添加到类中,在编译时或在加载类时?
objective-c - 类扩展中属性的可见性和 Objective C 中的继承
假设我有 2 个类:Money 和 Dollar,其中 Dollar 继承自 Money。
Money 在类扩展中声明了一个属性:
Dollar 继承了这个属性,但它在 Dollar 中的方法中是不可见的。我可以通过在 Dollar.m 中重新声明属性来“修复”:
我真的不喜欢这个,我什至不确定我是否知道编译器在做什么:
- 它只是使财产可见吗?
- 它是否创建了一个新属性和新 iVar 并“遮蔽”了前一个?
除了类及其子类的实现之外,对所有人隐藏属性的最佳方法是什么?
理想情况下,我不希望在 .h 文件中可见,因为它是一个实现细节。
ios - 类扩展与头文件
类扩展和头文件到底是什么?有什么区别?在头文件和类扩展中声明属性/方法有什么区别。我对objective-c完全陌生,所以初学者术语会很有用:)
提前致谢!
ios - 为类的私有方法创建类扩展
我已经创建了一个游戏模型作为一个类。我检查了这个关于创建类扩展的问题:Best way to define private methods for a class in Objective-C
我拥有的是一些公共方法——这些方法可供其他 VC 在应用程序中使用。我还想要一些私有方法,类公共方法可以使用,但不需要像这样对应用程序的其余部分开放。
我认为这可以通过类扩展来完成,在实现文件中添加一个额外的接口部分,但这似乎不起作用。
小鬼文件:
稍后我有另一个私有方法的声明:
我正在寻找的是在公共方法(createNewGameAgainst)中调用例如 [self checkIfGameAlreadyExistsAgainst...] 的能力。
java - 我应该扩展哪个类,AcionBar 还是 ActionBarImpl?
我觉得这是一个带有一些技巧的基本问题。
我想扩展ActionBar的功能,查看ActionBar代码发现ActionBar是一个抽象类,真正的实例化类是ActionBarImpl。
这种具有抽象和 Impl 实现的模式在 android 源代码中被广泛使用。
开发者网站不详述细节,但总是描述抽象类,就好像它是实现的类一样。
我看到从 java 语言严格的角度来看,我应该扩展 ActionBarImpl,否则我将无法调用super
方法,但我从未见过扩展<class>Impl
类的示例。
帮助。
javascript - Backbone JS 将扩展模型添加到其继承模型类型的集合中
我刚刚开始研究backboneJS,并且已经开始在codepen 中构建一个小型文本应用程序(http://codepen.io/azaslavsky/pen/fJghE)。一切都很顺利,除了我有一个问题:一旦用户点击提交按钮,我希望表单容器视图:
- 解析所有表单域。这些是多种模型类型(标题字段、所见即所得的文本编辑器等),以及一个集合(tagInput.collection - 用户放入的所有标签)
- 为用户提供给应用程序的所有这些数据创建一个标准化的 JSON 对象,以将其传递给服务器
目前,我正在尝试将 Backbone.Model 扩展为一个新的类“FormModel”,该类仅包含默认属性“value”。然后,我在我的主容器上创建了一个新集合,其中包括容器内的所有各种模型。因此,container.collection 的模型是 FormModel,但我尝试 .add() 的所有实际模型都是 FormModel 的扩展类。这可能吗?每当我尝试访问该集合时,它总是空的!我觉得我错过了理解底层逻辑指导骨干的一些关键部分,但我不能确切地说是什么!
(我认为是)相关代码附在下面。我的“迷你应用”最新版本的完整代码也链接在上面:
java - 扩展 HashMap 实现自定义 remove()
我尝试扩展HashMap
该类以实现自定义remove()
方法,如下所示:
如果 remove()
直接调用一切都很好,但是当使用迭代器删除条目时,调用的remove()
方法HashMap
而不是上面的覆盖remove()
方法:
查看条目迭代器中的源代码后,我HashMap
看到:
扩展HashMap
类不能访问所有私有字段,所以我不能只修改迭代器,我必须重写很多代码来让我自己的迭代器覆盖那个迭代器。
有没有办法完全覆盖remove()
,以便在每次调用的情况下都会调用它HashMap.remove()
?