我刚刚碰到了块,我认为它们正是我正在寻找的东西,除了一件事:是否可以从块中调用方法[self methodName]?
这就是我想要做的:
-(void)someFunction{
Fader* fader = [[Fader alloc]init];
void (^tempFunction)(void) = ^ {
[self changeWindow:game];
//changeWindow function is located in superclass
};
[fader setFunction:tempFunction];
}
Run Code Online (Sandbox Code Playgroud)
我已经搜索了几天,我找不到任何证据证明这是可能的.
这是完全可能的,还是我试图使用块来做他们不想要的东西?
我使用块的原因是我创建了一个Fader类,我希望存储一个块,以便在它完成淡出时执行.
谢谢
编辑:好的,我在建议中添加了,但我仍然收到EXC_BAD_ACCESS错误...
-(void)someFunction{
Fader* fader = [[Fader alloc]init];
__block MyScreen* me = self;
void (^tempFunction)(void) = ^ {
[me changeWindow:game];
//changeWindow function is located in superclass
};
[fader setFunction:tempFunction];
[fader release];
}
Run Code Online (Sandbox Code Playgroud)
也许我不允许给推子这个功能......?
问题:我什么时候需要在Rails的模型中使用self?
我的一个set模型中有一个方法.
class SomeData < ActiveRecord::Base
def set_active_flag(val)
self.active_flag = val
self.save!
end
end
Run Code Online (Sandbox Code Playgroud)
当我这样做,一切正常.但是,当我这样做时:
class SomeData < ActiveRecord::Base
def set_active_flag(val)
active_flag = val
save!
end
end
Run Code Online (Sandbox Code Playgroud)
active_flag值不会更改,而是静默失败.谁能解释一下?
我找不到任何副本,但如果有人发现一个也没关系.
在Swift游乐场玩耍的时候,我注意到,Self大写字母"S"可以和小写一起使用self.它们之间有什么区别吗?如果是这样,这两者的用途是什么,特别是对于Self?
根据我对self关键字的理解,它只是引用了类的当前实例.这不是一直都是默认行为吗?例如,不是
self.var_one = method(args)相当于var_one = method(args)?
如果是这样那么自我的用途是什么?
Python中的类和实例变量有什么区别?
class Complex:
a = 1
Run Code Online (Sandbox Code Playgroud)
和
class Complex:
def __init__(self):
self.a = 1
Run Code Online (Sandbox Code Playgroud)
使用呼叫:x = Complex().a在两种情况下都将x分配给1.
一个更深入的答案__init__(),self将受到赞赏.
还有一个关于"自我"是什么的问题,如果你不使用'自我'和什么是'cls'会发生什么.我"完成了我的作业",我只是想确保自己完成所有工作.
self- 要访问对象的属性,需要在属性名称前加上对象名称(objname.attributename).同样的方法self用于访问对象(类)本身内的属性.因此,如果您没有在类方法中使用self作为self的前缀,那么您将无法在类的其他方法中或在类之外访问该变量.因此,如果您只想将变量局部化为该方法,则可以省略它.同样的方法如果你有一个方法并且你没有想要与其他方法共享的任何变量,你可以省略self方法参数.
cls- 每个实例都创建它自己的属性"副本",因此如果您希望类的所有实例共享同一个变量,您可以cls在类声明中使用' '作为前缀.
这样可以吗?谢谢.
我早就做了一点Python.然而,我现在转向Java.我想知道Python"self"方法和Java"this"之间是否存在任何差异.
我知道"自我"不是关键字,而"这"是关键字.这几乎是我能想到的.我错过了什么吗?
在测试轨道模型中的getter/setter对时,我发现了一个很好的行为示例,我一直认为它很奇怪且不一致.
在这个例子中,我正在处理class Folder < ActiveRecord::Base.
Folder belongs_to :parent, :class_name => 'Folder'
在getter方法上,如果我使用:
def parent_name
parent.name
end
Run Code Online (Sandbox Code Playgroud)
...要么...
def parent_name
self.parent.name
end
Run Code Online (Sandbox Code Playgroud)
...结果完全一样,我得到了父文件夹的名称.但是,如果我使用getter方法...
def parent_name=(name)
parent = self.class.find_by_name(name)
end
Run Code Online (Sandbox Code Playgroud)
......父母变成零,但如果我用......
def parent_name=(name)
self.parent = self.class.find_by_name(name)
end
Run Code Online (Sandbox Code Playgroud)
......那么它的确有效.
所以,我的问题是,为什么你有时需要声明self.method,为什么你只能使用局部变量?
这似乎需要/使用self的ActiveRecord的不一致,我想明白这一点更好,所以我不觉得我一直在猜测我是否需要自行申报与否.您应该/何时不应该在ActiveRecord模型中使用self?
我有一个Obj-C对象,里面有一堆方法.有时一个方法需要在同一个对象中调用另一个方法.我似乎无法弄清楚如何使用C方法调用Obj-C方法...
工作:调用Obj-C方法的Obj-C方法:
[self objCMethod];
Run Code Online (Sandbox Code Playgroud)
工作:调用C方法的Obj-C方法:
cMethod();
Run Code Online (Sandbox Code Playgroud)
不工作:调用Obj-C方法的C方法:
[self objCMethod]; // <--- this does not work
Run Code Online (Sandbox Code Playgroud)
最后一个示例导致编译器吐出此错误:
错误:'self'未声明(首次使用此功能)
两个问题.为什么C函数看不到"自"变量,即使它在"自"对象内部,如何在不引起错误的情况下调用它?非常感谢任何帮助!:)
这不是Rails特有的 - 我只是以Rails为例.
我在Rails中有一个模型:
class Item < ActiveRecord::Base
def hello
puts "Hello, #{self.name}"
end
end
Run Code Online (Sandbox Code Playgroud)
(假设Item模型(类)有一个叫做的方法name).我什么时候需要使用self.name,何时可以使用name?(例如#{name})