就像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函数.编译器会警告我.我怎么能像苹果那样做,隐藏实现,只声明接口.谢谢.
我对ColdFusion中的构造函数有一些疑问:
init作为构造函数名称吗?如果我在不调用init方法的情况下创建组件的实例,会返回什么?
实例= CREATEOBJECT( "部件", "cfcName"); //现在实例的值是多少
我可以取出init方法中的代码并删除init方法,然后将代码粘贴到组件的头部,它是否与init构造函数具有相同的效果?
十分感谢.
这样做有什么区别
class a:
def __init__(self):
self.val=1
Run Code Online (Sandbox Code Playgroud)
去做
class a:
val=1
def __init__(self):
pass
Run Code Online (Sandbox Code Playgroud) 实际上我正在开发一个ARC启用的项目.我知道使用alloc并init正在拍摄ownership物体.我知道,如果我创建一个像这样的字符串
NSString *myString = [[NSString alloc]initWithFormat:@"Something"];
Run Code Online (Sandbox Code Playgroud)
然后我需要release的myString自己.如果我使用ARC,该怎么办?我无法释放自己.它会造成泄漏吗?或者我应该不创建这样的对象?
我也可以像下面的代码一样创建一个字符串.
NSString *myString = [NSString stringWithFormat:@"Something"];
Run Code Online (Sandbox Code Playgroud)
但是我需要使用哪种类型的ARC启用项目?如果我使用第一种类型会发生什么?
在我开始之前,这适用于我们自己的基于Android的设备,不适用于手机,也不适用于其他地方.
我们在init.rc中有一个服务,它是一个postgresql数据库服务器.这将在启动时启动,并始终在系统的后台运行.但它有可能会关闭,我们希望有一种方法可以从系统的android端停止并启动此服务.
有没有办法从Android Activity发送init启动命令?从root shell开始,这相当于运行"start servicename"和"stop servicename".
我有泛型,我希望能够使用特定的约束来初始化它.约束仅用于初始化.班上的其他人都不在乎.这是一个简化的例子:
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) 这是一个如何优雅地规避课堂上的可空性的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
init.d我正在尝试第一次编写脚本来启动supervisord进程。Supervisor 是一个过程控制器/管理器,如runit、upstart、 或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脚本,例如 …
我对 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)
打印出相同的结果。
你能解释一下为什么我们需要一个构造函数或者给我一个上面方法不起作用的例子吗?
我正在尝试运行一个在设备完成启动时执行的脚本。此特定设备不支持从 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 来完成的。
init ×10
android ×2
constructor ×2
objective-c ×2
python ×2
swift ×2
alloc ×1
class ×1
coldfusion ×1
generics ×1
init.d ×1
ios ×1
linux ×1
linux-kernel ×1
nginx ×1
non-nullable ×1
nullable ×1
rhel ×1
supervisord ×1