标签: init

如何声明公共接口,例如apple.另一种方法,隐藏实现

就像UILabel类一样:

class UILabel : UIView, NSCoding {

    var text: String! // default is nil
    var font: UIFont! // default is nil (system font 17 plain)
    var textColor: UIColor! // default is nil (text draws black)
    var shadowColor: UIColor! // default is nil (no shadow)
    var shadowOffset: CGSize // default is CGSizeMake(0, -1) -- a top shadow
....
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我定义一个这样的类,它也没有init函数.编译器会警告我.我怎么能像苹果那样做,隐藏实现,只声明接口.谢谢.

init swift

7
推荐指数
1
解决办法
683
查看次数

关于ColdFusion组件构造函数名称的问题

我对ColdFusion中的构造函数有一些疑问:

  1. 我必须使用名称init作为构造函数名称吗?
  2. 如果我在不调用init方法的情况下创建组件的实例,会返回什么?

    实例= CREATEOBJECT( "部件", "cfcName"); //现在实例的值是多少

  3. 我可以取出init方法中的代码并删除init方法,然后将代码粘贴到组件的头部,它是否与init构造函数具有相同的效果?

十分感谢.

coldfusion constructor init

6
推荐指数
2
解决办法
1958
查看次数

6
推荐指数
3
解决办法
496
查看次数

在启用ARC的项目中使用alloc,init

实际上我正在开发一个ARC启用的项目.我知道使用allocinit正在拍摄ownership物体.我知道,如果我创建一个像这样的字符串

NSString *myString = [[NSString alloc]initWithFormat:@"Something"];
Run Code Online (Sandbox Code Playgroud)

然后我需要releasemyString自己.如果我使用ARC,该怎么办?我无法释放自己.它会造成泄漏吗?或者我应该不创建这样的对象?

我也可以像下面的代码一样创建一个字符串.

NSString *myString = [NSString stringWithFormat:@"Something"];
Run Code Online (Sandbox Code Playgroud)

但是我需要使用哪种类型的ARC启用项目?如果我使用第一种类型会发生什么?

objective-c init alloc ios automatic-ref-counting

6
推荐指数
1
解决办法
5173
查看次数

从Activity启动Android init.rc服务

在我开始之前,这适用于我们自己的基于Android的设备,不适用于手机,也不适用于其他地方.

我们在init.rc中有一个服务,它是一个postgresql数据库服务器.这将在启动时启动,并始终在系统的后台运行.但它有可能会关闭,我们希望有一种方法可以从系统的android端停止并启动此服务.

有没有办法从Android Activity发送init启动命令?从root shell开始,这相当于运行"start servicename"和"stop servicename".

android init android-activity

6
推荐指数
1
解决办法
6939
查看次数

init中的Swift通用约束

我有泛型,我希望能够使用特定的约束来初始化它.约束仅用于初始化.班上的其他人都不在乎.这是一个简化的例子:

struct Generic<T> {
  let compare: (T, T) -> Bool
  init<T: Equatable>(data: [T]) {
    let handler: (T, T) -> Bool = { $0 == $1 }
    compare = handler
    insert(data)
  }

  init(compareHandler: (T, T) -> Bool, data[T]) {
    compare = self.compareHandler
    insert(data)
  }
}
Run Code Online (Sandbox Code Playgroud)

你可以看到有两个初始化器.第二个显然工作正常.但是,在第一个中,本地类型T与struct的泛型类型不匹配.因此,例如,尝试插入我得到的数据Cannot invoke 'insert' with an argument list of type '([T])'.我是否可以仅针对初始化或特定函数专门化Struct的泛型类型?

请注意,我已经尝试init<T where T:Equatable>(data: [T])过同样的效果.

更新

我正在使用以下解决方法:我创建一个顶级函数并删除专用的init:

func equatableHandler<T: Equatable>(left: T, right: T) -> Bool {
  return left == right
} …
Run Code Online (Sandbox Code Playgroud)

generics init swift

6
推荐指数
1
解决办法
2318
查看次数

我们能否确保`+(nonnull instancetype)sharedInstance的可空性;`?

这是一个如何优雅地规避课堂上的可空性的init问题NSObject.

所以这是一个经典的objective-c实现:

+ (instancetype)sharedInstance
{
    static dispatch_once_t onceToken;
    static id sharedInstance;
    dispatch_once(&onceToken, ^
    {
        sharedInstance = [[self alloc] init];
    });
    return sharedInstance;
}
Run Code Online (Sandbox Code Playgroud)

但是现在我想声明它nonnull,如果可能的话:

+ (nonnull instancetype)sharedInstance;
Run Code Online (Sandbox Code Playgroud)

不幸的是,init返回一个nullable instancetype值.我应该NSAssert在打电话后添加一个什么东西init

我注意到有些人甚至将价值观记录nonnull在现实中nullable.那有意义吗?

我应该大胆地简单地添加到NS_ASSUME_NONNULL_BEGIN任何地方,而不是真正确保价值观nonnull吗?

nullable objective-c init non-nullable objective-c-nullability

6
推荐指数
1
解决办法
1623
查看次数

对于像supervisord 这样的进程控制器,RHEL init.d 脚本中的 chkconfig 行应该设置为什么?

init.d我正在尝试第一次编写脚本来启动supervisord进程。Supervisor 是一个过程控制器/管理器,如runitupstart、 或systemd。我希望它在系统重新启动时自动启动,以便它可以启动我的应用程序。

我使用这个tldp 教程作为编写脚本的基础init.d。它工作正常,但我不明白应该如何修改文件中的这一行:

# chkconfig: 2345 95 05
Run Code Online (Sandbox Code Playgroud)

本行教程中的注释指出:

尽管这些是注释,但它们由 chkconfig 命令使用并且必须存在。该特定行定义在运行级别 2、3、4 和 5 上,该子系统将以优先级 95(最后一个)激活,并以优先级 05(第一个)停用。

这个RHEL 文档解释了各种运行级别:

0 - Halt
1 - Single-user text mode
2 - Not used (user-definable_
3 - Full multi-user text mode
4 - Not used (user-definable)
5 - Full multi-user grapical mode
6 - Reboot
Run Code Online (Sandbox Code Playgroud)

从这些选择中,我想我想在 上运行我的35,假设 1 仅适用于系统管理员。

有一些示例 Supervisordinit.d脚本,例如 …

rhel nginx init init.d supervisord

6
推荐指数
1
解决办法
4336
查看次数

为什么我们需要 __init__ 来初始化一个 python 类

我对 OOP 还很陌生,我需要一些帮助来理解 python 类中对构造函数的需求。

我知道init用于初始化类变量,如下所示:

class myClass():
    def __init__ (self):
        self.x = 3
        print("object created")

A = myClass()
print(A.x)
A.x = 6
print(A.x)
Run Code Online (Sandbox Code Playgroud)

输出:

object created
3
6
Run Code Online (Sandbox Code Playgroud)

但是,我也可以这样做,

class myClass():
    x = 3
    print("object created")

A = myClass()
print(A.x)
A.x = 6
print(A.x)
Run Code Online (Sandbox Code Playgroud)

打印出相同的结果。

你能解释一下为什么我们需要一个构造函数或者给我一个上面方法不起作用的例子吗?

python constructor init

6
推荐指数
2
解决办法
5554
查看次数

Android 在启动时使用 init.rc 运行脚本不起作用

我正在尝试运行一个在设备完成启动时执行的脚本。此特定设备不支持从 init.d 目录运行脚本,这就是我使用 init.rc 的原因。

init.rc 文件已修改为包含以下代码

on property:sys.boot_completed=1
start initAsic

service initAsic /data/local/tmp/runn.sh
user root
group root
oneshot
Run Code Online (Sandbox Code Playgroud)

然后启动映像被重建并刷新到设备。可以通过查看位于以下位置的 init.rc 文件来确认更改/

目前我只使用一个简单的测试脚本(testScript.sh),它发出以下命令

echo hi >> /data/local/tmp/test.txt
Run Code Online (Sandbox Code Playgroud)

testScript.sh 和 text.txt 文件已777设置权限,并且均已使用 推送到设备adb push。他们当前的位置是/data/local/tmp/

由于某种原因,我的脚本似乎没有运行,因为我看不到任何文本被写入 test.txt。

我错过了什么吗?会不会是 SELinux 的问题?

我的设备当前已将 SElinux 设置为宽容。这是通过更改 BoardConfig.mk 文件并重建 boot.img 来完成的。

linux android init linux-kernel

6
推荐指数
1
解决办法
7909
查看次数