问题标签 [designated-initializer]
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.
iphone - 为 UITableViewController 子类覆盖哪个初始化程序
我有一个UITableViewController
实例化的子类,具体取决于它的使用位置、NIB 或通过代码。在这两种情况下,我都想在初始化方法中进行自定义。这是否意味着我需要同时实现initWithNibName:bundle:
and initWithCoder:
,并且每个方法都会调用其各自的超级初始化程序?
虽然我现在不需要这个,但如果我也希望能够用 实例化视图控制器initWithStyle:
怎么办?然后我需要 3 种不同的 init 方法来复制相同的行为吗?
这似乎违反了整个指定的初始化程序约定,因为本质上会有 3 个单独的初始化程序,它们最终不会调用一个通用的 init 方法。或者有没有办法在支持 3 个不同的实例化路由的同时创建一个通用的指定初始化器?
c++ - C++ 等价于指定初始化器?
最近我一直在做一些嵌入式设备,我们有一些结构和联合需要在编译时初始化,这样我们就可以将某些不需要修改的东西保存在闪存或 ROM 中,并节省一点闪存或 SRAM 有点性能成本。目前该代码编译为有效的 C99,但如果没有此调整,它过去也可以编译为 C++ 代码,并且支持以这种方式编译的东西也很棒。防止这种情况发生的关键因素之一是我们使用了 C99 指定的初始化程序,这些初始化程序在 C++ 的 C 子集中不起作用。我不是 C++ 爱好者,所以我想知道在 C++ 兼容的 C 中可能有什么简单的方法可以实现这一点,
还有一点需要注意:指定初始化器使用的一个关键原因是初始化为不是联合的第一个成员。此外,为了保持与其他编译器的兼容性,坚持使用标准 C++ 或 ANSI C 是一个优势(我知道 GNU 扩展提供了类似没有 C99 的指定初始化程序之类的东西)。
c - 未由指定初始化程序命名的字段会发生什么?
在 C99(而不是 C++)中,可以使用以下语法初始化结构:
未指定的字段会发生什么?
c++ - 为什么指定的初始化程序没有在 g++ 中实现
是否有任何具体原因为什么没有将对指定初始化程序的支持添加到 g++ 中?是因为C99标准来得晚,g++开发得早,后来人们不关心这个问题,还是在C++的语法中实现指定初始化器有一些内在的困难?
ios - 我什么时候需要调用 -[UIViewController initWithNibName:bundle:]?
在帖子Using initWithNibName 没有任何改变,他展示了相同 View Nib 定义的两种用法,在第一种情况下,他只是调用 alloc/init,第二种情况下,他指定了 initWithNibName。
所以,虽然这总是有效的:
MyViewController *vctrlr = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[self.navigationController pushViewController:vctrlr animated:YES];
[vctrlr release];
以下适用于我继承的所有视图控制器,但不适用于我的!
TheirViewController *vctrlr = [[TheirViewController alloc] init];
[self.navigationController pushViewController:vctrlr animated:YES];
[vctrlr release];
iOS 编程新手,我继承了一些代码。所有视图控制器的视图都在 IB 中定义,但是这些视图控制器的分配/初始化创建不一致。我创建了一个新的视图控制器和 XIB,但除非我使用 initWithNibName,否则它不起作用(当我将视图控制器推到导航控制器上时它会崩溃)。我无法说出我的视图控制器与其他控制器有何不同......有什么提示吗?除了我的之外,我能够删除应用程序中所有其他视图控制器的 initNibName 用法。
c - 使用指定的初始化程序时,是否可以获得指向“this”结构的指针?
这种结构用作链表的头部:
当 next 和 prev 都指向 struct 本身时,列表为空。以下宏可用于初始化结构:
这边走:
但是,有没有办法通过以下方式做同样的事情,没有宏参数?:
我尝试了以下方法,但它导致了编译错误:
c - 在 C99+ 中结合指定的初始化程序和 malloc?
有没有一种很好的方法可以将 C99 中的指定初始化程序与 a 的结果结合起来malloc
?
以下似乎有不必要的重复:
可以从上面的代码中删除Type
, 和的使用吗?*t
c - 结构初始化程序中的点 (.) 是什么意思?
我不太了解这种 C 语法。我什至无法搜索,因为我不知道语法的名称。那是什么?
designated-initializer - 指定初始化器如何工作
我在理解指定的初始化程序时遇到了一些麻烦。我正在从“在 Mac 上学习 Objective C”一书中学习 Objective C。下面是一个实现文件。
据我了解:
是默认初始化器。当应使用以下语句初始化 Tire 类的实例时
然后将执行上述初始化方法。但是,由于该方法包含“压力 = p”,所以压力等于多少,因为直到这个阶段我们还没有给“p”任何值。另外,这个方法执行完成后会发生什么?队列中的下一个“init”方法是哪个?
objective-c - 为什么指定的初始化程序不能在其基类中调用辅助初始化程序?
根据文档,Objective-C 中类的指定初始化程序必须调用其基类的指定初始化程序。
另一个规则是辅助初始化器必须调用它们自己类的指定初始化器。
但是如果遵循第二条规则,为什么指定初始化器不能在其基类中调用辅助初始化器呢?这个基础二级初始化器最终会调用它自己关卡的 DI,所以对象仍然会被正确初始化,对吧?
区别似乎在于谁为缺失的变量选择默认值——你或你的基类。