Questions tagged «initialization»

6
在Java开关中声明和初始化变量
我对Java开关有一个疯狂的问题。 int key = 2; switch (key) { case 1: int value = 1; break; case 2: value = 2; System.out.println(value); break; default: break; } 方案1-当key为2时,它成功地将值打印为2。 方案2-当我要在其中注释value = 2时case 2:,saying地说“本地变量值可能尚未初始化”。 问题: 场景1:如果执行流程没有转到case 1:(当时key = 2),那么它如何知道value变量的类型为int? 方案2:如果编译器将value变量的类型识别为int,则它必须已访问。(声明和初始化)中的int value = 1;表达式case 1:。那为什么它会吱吱作响?当我要发表评论value = 2时case 2:,说本地变量值可能没有初始化。


3
未初始化的对象vs初始化为NULL的对象
我在用Java工作。 我通常会这样设置一些对象: public class Foo { private SomeObject someName; // do stuff public void someMethod() { if (this.someName != null) { // do some stuff } } } 问题是:someName在此示例中是否等于null,按原样我可以reliably for all objects假定对未初始化的对象进行空检查将是准确的?

5
如何在Swift中为UIViewController子类创建自定义初始化程序?
不好意思,如果以前已经问过这个问题,我已经搜索了很多内容,并且很多答案都来自早期Swift版本,当时情况有所不同。我似乎找不到确切的答案。 我想创建一个子类,UIViewController并有一个自定义的初始化程序,使我可以轻松地在代码中进行设置。我在Swift中无法做到这一点。 我想要一个init()可以用来传递特定参数的函数,NSURL然后将其与视图控制器一起使用。在我看来,它看起来像init(withImageURL: NSURL)。如果我添加了该功能,则要求我添加该init(coder: NSCoder)功能。 我相信这是因为它在超类中用required关键字标记了吗?所以我必须在子类中这样做吗?我添加它: required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } 怎么办?我的特殊初始化程序被认为是convenience一个吗?指定一个?我叫超级初始化器吗?来自同一类的初始值设定项? 如何将特殊的初始化程序添加到UIViewController子类上?

10
C结构中的默认值
我有一个这样的数据结构: struct foo { int id; 诠释路线; int backup_route; int current_route; } 还有一个称为update()的函数,用于请求其中的更改。 更新(42,dont_care,dont_care,new_route); 这确实很长,如果我向结构中添加一些内容,则必须在对update(...)的每个调用中都添加一个“ dont_care”。 我正在考虑将其传递给一个结构,但预先用'dont_care'填充该结构比仅在函数调用中将其拼写更乏味。我可以在默认值dont care的某个地方创建该结构,然后在将其声明为局部变量后设置我关心的字段吗? struct foo bar = {.id = 42,.current_route = new_route}; 更新(&bar); 将我想要表达的信息传递给更新功能的最优雅的方法是什么? 我希望其他所有内容都默认为-1(“ dont care”的秘密代码)
92 c  initialization 

9
将结构初始化/重置为零/空
struct x { char a[10]; char b[20]; int i; char *c; char *d[10]; }; 我填写此结构,然后使用值。在下一次迭代中,我想将所有字段重置为0或null我开始再使用它之前。 我怎样才能做到这一点?我可以使用,memset还是必须仔细检查所有成员,然后逐个进行?

8
是否可以将C指针初始化为NULL?
我一直在写类似的东西 char *x=NULL; 假设 char *x=2; 将创建一个char指向地址2 的指针。 但是,在《 GNU C编程指南》中,它指出int *my_int_ptr = 2;将整数值存储2到my_int_ptr分配时的随机地址中。 这似乎在暗示自己char *x=NULL被分配任何价值NULL投的char是在内存中的一些随机地址。 而 #include <stdlib.h> #include <stdio.h> int main() { char *x=NULL; if (x==NULL) printf("is NULL\n"); return EXIT_SUCCESS; } 确实打印 一片空白 当我编译并运行它时,我担心我依赖未定义的行为,或者至少是未指定的行为,因此我应该编写 char *x; x=NULL; 代替。



7
JavaFX:如何在初始化期间从控制器获得阶段?
我想处理控制器类中的舞台事件(即隐藏)。所以我要做的就是通过添加一个监听器 ((Stage)myPane.getScene().getWindow()).setOn*whatIwant*(...); 但问题是初始化是在之后立即开始的 Parent root = FXMLLoader.load(getClass().getResource("MyGui.fxml")); 和之前 Scene scene = new Scene(root); stage.setScene(scene); 因此.getScene()返回null。 我自己发现的唯一解决方法是在myPane.sceneProperty()中添加一个侦听器,当它变为非null时,我得到了场景,将其添加到.windowProperty()中,我的天哪!侦听器处理,这是我终于检索到的阶段。最后,设置所需的侦听器来安排事件。我认为听众太多。这是解决我的问题的唯一方法吗?

12
使用故事板中的界面设置在Swift中为UIViewController进行自定义初始化
我在为UIViewController的子类编写自定义init时遇到问题,基本上我想将依赖项通过viewController的init方法传递,而不是像 viewControllerB.property = value 所以我为viewController做了一个自定义的初始化,并调用了超级指定的初始化 init(meme: Meme?) { self.meme = meme super.init(nibName: nil, bundle: nil) } 视图控制器界面位于情节提要中,我也将自定义类的界面设置为我的视图控制器。即使您未在此方法中执行任何操作,Swift也需要调用此init方法。否则编译器会抱怨... required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } 问题是当我尝试使用MyViewController(meme: meme)它的自定义init根本没有在viewController中的init属性时... 我正在尝试调试,我在viewController中init(coder aDecoder: NSCoder)找到它,然后先调用它,然后再调用我的自定义init。但是,这两个init方法返回不同的self内存地址。 我怀疑有毛病初始化为我的viewController,它总是会返回self与init?(coder aDecoder: NSCoder),其中,有没有实现。 有谁知道如何正确地为您的viewController进行自定义初始化?注意:我的viewController的界面是在情节提要中设置的 这是我的viewController代码: class MemeDetailVC : UIViewController { var meme : Meme! @IBOutlet weak var editedImage: UIImageView! // …


7
为什么Swift初始化程序不能在其超类上调用便捷初始化程序?
考虑两个类: class A { var x: Int init(x: Int) { self.x = x } convenience init() { self.init(x: 0) } } class B: A { init() { super.init() // Error: Must call a designated initializer of the superclass 'A' } } 我不明白为什么不允许这样做。最终,每个类的指定初始化叫他们需要的任何值,那么为什么我要重复我自己B的init通过指定一个默认值x再次,当方便init在A会做得很好?


4
Swift:自定义ViewController初始化程序
如何UIViewController在Swift的子类中添加自定义初始化程序? 我创建了一个UIViewController类似于以下内容的子类: class MyViewController : UIViewController { init(leftVC:UIViewController, rightVC:UIViewController, gap:Int) { self.leftVC = leftVC; self.rightVC = rightVC; self.gap = gap; super.init(); setupScrollView(); setupViewControllers(); } } 当我运行它时,出现致命错误: 致命错误:对类“ MyApp.MyViewController”使用未实现的初始化程序“ init(nibName:bundle :)” 我读过elewhere,添加自定义初始化程序时还必须覆盖它,init(coder aDecoder:NSCoder)所以让我们覆盖它init,看看会发生什么: override init(coder aDecoder: NSCoder) { super.init(coder: aDecoder); } 如果添加此代码,Xcode会抱怨self.leftVC is not initialized at super.init call。所以我想那也不是解决方案。所以我想知道如何ViewController在Swift中的子类中正确添加自定义初始化程序(因为在Objective-C中这似乎不是问题)?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.