在Objective-c 2.0中,为什么子类需要使用self关键字在父类中引用实例变量?
考虑这个例子:
// a.h
@interface MyClass : NSObject
@property (nonatomic, retain) Object *myObject;
@end
// a.m
@implementation MyClass
@synthesize myObject;
@end
// b.h
@interface AnotherClass : MyClass
@end
// b.m
@implementation AnotherClass
- (void) someMethod {
// error
// Object *obj = myObject;
// works
// Object *obj = self.myObject;
}
@end
Run Code Online (Sandbox Code Playgroud) 我想知道为什么 Visual Studio会提出这个警告:
通过实例访问共享成员,常量成员,枚举成员或嵌套类型
我的代码:
Dim a As ApplicationDeployment = deployment.Application.ApplicationDeployment.CurrentDeployment
If System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed Then
If a.IsNetworkDeployed Then
' do something
End If
End If
Run Code Online (Sandbox Code Playgroud)
什么暗示"通过一个实例"?另外,为什么这是一个"警告"?
鉴于上课Obj,
class Obj: NSObject {
var x = "x"
}
Run Code Online (Sandbox Code Playgroud)
和它的子类,Obj1你如何更改默认值var x?
简单地设置一个新值将是最有意义的,但似乎错误...
class Obj1: Obj {
var x = "y"
}
Run Code Online (Sandbox Code Playgroud)
❗️无法覆盖存储的属性'x'
overriding instance-variables default-value subclassing swift
我在使用singleton模式初始化smalltalk中的实例变量时遇到了麻烦.(这里是另一个实现的链接以便澄清)
这就是我所拥有的:
new
^UniqueInstance ifNil: [UniqueInstance := self basicNew.
UniqueInstance: instanceVar := Object new. ].
Run Code Online (Sandbox Code Playgroud)
最后一行(UniqueInstance:instanceVar:= Object new.)不起作用,但基本上我需要做的是:在将UniqueInstance返回给调用者之前,将instanceVar实例化为Object.
请注意,此"new"方法用作类实例化,并且该库是UniqueIsntance的实例变量(所需类的isntance).
谁能指出我正确的方向?
我有一个Ruby类.我想从参数获取一个实例变量到该类中的方法.我可以将所有实例变量作为数组获取:
self.instance_variables
Run Code Online (Sandbox Code Playgroud)
但是,我想获取名为的实例变量arg,具体如下:
class MyClass
def get_instance_variable(arg)
hash_of_instance_variables[arg]
end
end
object.get_instance_variable('my_instance_var')
Run Code Online (Sandbox Code Playgroud)
我该如何计算hash_of_instance_variables?
我发现了一篇有趣的文章,描述了如何在Objective-C 2.0中,在实现文件中声明实例变量.考虑这个例子:
@interface MyClass {}
@end
@implementation MyClass {
NSObject *obj1;
NSObject *obj2;
}
@end
Run Code Online (Sandbox Code Playgroud)
注意实例变量obj1,并obj2在不声明的属性.由于它们未使用@property语句声明,因此没有相应的所有权限定符,例如weak/ strong.
我的问题是,使用自动引用计数(ARC)的项目是否记得清理以这种方式声明的对象?任何解决这一具体问题的文件都将受到赞赏.
我正在学习CoffeeScript,我有一个轻微的头痛,我还没弄清楚.如果我创建一个对象来做某些事情,我偶尔需要一个实例变量来在该方法之间共享该对象.例如,我想这样做:
testObject =
var message # <- Doesn't work in CoffeeScript.
methodOne: ->
message = "Foo!"
methodTwo: ->
alert message
Run Code Online (Sandbox Code Playgroud)
但是,您不能var在CoffeeScript中使用,并且没有该声明message仅在内部可见methodOne.那么,如何在CoffeeScript中的对象中创建实例变量?
更新:修复了我的例子中的拼写错误,所以方法实际上是方法:)
假设我有这段代码:
class Animal {
int legs = 4;
int head = 1;
}
public class Dog extends Animal {
public static void main (String []args) {
Dog dog = new Dog();
}
}
Run Code Online (Sandbox Code Playgroud)
我知道super()隐式置于no-args构造函数的第一行,所以我知道Animal构造函数将被执行,因此Animal将设置实例变量.
为了这个目的,我想,了解如果一旦这些变量已经被超级构造函数(初始化Animal),这些实例变量会在动物对象有保留或复制到子类(Dog).
在第一种情况下,对象Animal将被隐式实例化,super();并且每当实例Dog需要访问其中一个变量时,它将访问实例中保存的变量Animal(在后台创建).或者第二种情况,如果对象Animal将被临时创建,则将所有实例变量(in Animal)复制到Dog实例,然后删除Animal临时创建的实例.
我个人认为,例如,一个Dog对象将直接链接到一个Animal直接连接到一个对象的对象.
是这样的吗?
我正在开发一个项目,最初只是构建一个带有参数(XML文件)的函数,并将其转换为HTML/CSS结构(此处可以找到早期版本).这很有效.但是,我想实现更多选项和更多灵活性.我读过的主题(如1,2,3),但我不能换我的头周围.
我的插件有很多特定于实例的需求:
并且有一些重要的选择:
我将描绘插件当前状态的基本结构.
两个第一选项是最重要的选项.但默认为true,如果用户同时打开它们false,则插件将不会执行.
然后,插件会分配全局变量,并根据此信息创建新的DOM元素.在实践中它看起来像这样(注意全局变量在我的脚本的顶部声明).
function initVars(args) {
fontsizes = fsFontSizes;
errorContainer = $(".tv-error");
var trees = [],
tooltips = [];
if (args.normalView) {
normalView = true;
$(args.container).append('<div id="tree-visualizer" style="display: none"></div>');
SS = $("#tree-visualizer");
var SSHTML = '<div class="tv-error" style="display: none"><p></p></div>' +
'<div class="tree" style="font-size: ' + args.fontSize + 'px;"></div>' +
'<aside class="tooltip" style="display: none"><ul></ul>' +
'<button>✕</button></aside>';
if …Run Code Online (Sandbox Code Playgroud) 我主要使用PHP和Java编写代码,但我偶尔会在项目的前端工作并使用JavaScript.我通常以不同于下面的方式创建对象,但是我遇到了这个问题,我感兴趣的是语法与我通常编程的类似.
我正在四处寻找,试图找出如何使用下面的语法在JavaScript类中使用实例变量.我已经尝试通过name;,或_name;,或者var name;所有这些先前的变量声明实例变量并添加= null;,但仍然在我的控制台中出错.错误主要是my-file.js:2 Uncaught SyntaxError: Unexpected identifier.我只是想通过构造函数设置我的实例变量.
如何使用JavaScript中的实例变量,使用下面的语法?
class MyClass {
var _name;
constructor(name) {
_name = name;
alert("Hello world, from OO JS!");
this.myFunction();
}
myFunction() {
document.getElementById("myElement").addEventListener("click", function() {
console.log("Ant's function runs. Hello!");
});
}
}
window.onload = function() {
var person = "John Smith";
var myClass = new MyClass(person);
}
Run Code Online (Sandbox Code Playgroud) inheritance ×2
.net ×1
class ×1
coffeescript ×1
constructor ×1
java ×1
javascript ×1
jquery ×1
objective-c ×1
oop ×1
overriding ×1
ruby ×1
self ×1
shared ×1
singleton ×1
smalltalk ×1
subclassing ×1
swift ×1
vb.net ×1
warnings ×1