关于Objective-C的一些事情让我很困惑:
首先,在objective-c指南中,很明显每个类都需要调用其子类的init方法.关于直接从NSObject继承的类是否需要调用其init方法有点不清楚.是这样的吗?如果是这样,为什么呢?
其次,在关于NSObject的部分中,有这样的警告:
但是,不需要从另一个类继承任何特殊行为的类应该成为NSObject类的子类.该类的实例必须至少具有在运行时表现为Objective-C对象的能力.从NSObject类继承此功能比在新的类定义中重新创建它更简单,更可靠.
这是否意味着我需要指定所有对象显式地从NSObject继承?或者这就像Java/Python/C#,其中所有类都是NSObject的子类型?如果没有,是否有任何理由制作除NSObject之外的根类?
实际上我重构了一部分代码.我想要做的是用对象"TaskArgument"初始化一个对象"任务".我们说"TaskArgument"是抽象的,"Task"实现了一个方法"OnEnterTask(TaskArgument args)"并且是密封的(对于现有系统的某些特殊行为,这超出了范围).
旧代码:
public sealed class Task : SomeSystemBaseTask {
private int accessMe;
private int meToo;
public void OnEnterTask(TaskArgument args) {
if (args is SimpleTaskArgument) {
accessMe = ((SimpleTaskArgument)args).uGotIt;
meeToo = 0;
} else if (args is ComplexTaskArgument) {
accessMe = ((ComplexTaskArgument)args).uGotItValue * ((ComplexTaskArgument)args).multiplier;
meToo = ((ComplexTaskArgument)args).multiplier - 1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
什么是避免类型检查的最佳做法?我的第一个愚蠢的想法是:
public abstract class TaskArgument {
internal public abstract Initialize(Task args);
}
public class SimpleTaskArgument : TaskArgument {
public int uGotIt = 10;
internal public Initialize(Task task){
task.accessMe …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的单身人士
class Singleton:
class __impl:
def __init__(self):
print "INIT"
__instance = None
def __init__(self):
# Check whether we already have an instance
if Singleton.__instance is None:
Singleton.__instance = Singleton.__impl()
# Store instance reference as the only member in the handle
self.__dict__['_Singleton__instance'] = Singleton.__instance
def __getattr__(self, attr):
""" Delegate access to implementation """
return getattr(self.__instance, attr)
def __setattr__(self, attr, value):
""" Delegate access to implementation """
return setattr(self.__instance, attr, value)
Run Code Online (Sandbox Code Playgroud)
当我做了几个Singleton的实例时,我得到了两个init的调用,我的意思是"INIT"被打印了两次,我觉得它不应该发生
有人知道这有什么问题或有更好的方法来实现这个?
我正在尝试在Python中导入包内的模块中的函数,但是当我尝试时:
from package.module import some_function
Run Code Online (Sandbox Code Playgroud)
Python执行包的__init__.py但它不会发生.
有没有办法导入函数告诉Python忽略包的__init__.py?
谢谢
我故意在app = Flask(name)中删除了名字,我收到此错误:
Traceback (most recent call last):
File "routes.py", line 4, in <module>
app = Flask()
TypeError: __init__() takes at least 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
这是我的nettuts代码,这是我的代码:
from flask import Flask, render_template
app = Flask()
@app.route('/')
def home():
return render_template('home.html')
@app.route('/about')
def about():
return render_template('about.html')
if __name__ == '__main__':
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
我的问题是:这个init方法在哪里至少需要2个参数?
我有一个与C中的结构初始化有关的问题.我有一个结构:
struct TestStruct
{
u8 status;
u8 flag1;
u8 flag2;
};
Run Code Online (Sandbox Code Playgroud)
我想要一个泛型函数/宏来初始化这个结构并设置一个参数的值,例如status = 1,简单的方法是:
TestStruct t = {};
t.status = 1;
Run Code Online (Sandbox Code Playgroud)
但是,通过执行此操作,我将状态值设置为两次,在init函数中首先设置为0,然后将其设置为1(优化没有帮助?).
(请不要告诉我t = {1,0,0}我正在寻找一种通用方法)
我正在考虑init函数中的一个宏,例如:
#define INIT_TESTSTRUCT (param, value) \
{ .status=0, .flag1=0, .flag2=0, .param=value }
TestStruct t = INIT_TESTSTRUCT(status, 0);
Run Code Online (Sandbox Code Playgroud)
但是,编译器给出错误"初始化字段被覆盖",因为我已经设置了状态值两次.
请帮助指出如何改变宏来实现我想要的,非常感谢.
我有一个要求,我需要开发读取TCP/IP套接字的应用程序.我成功地将程序作为Java程序,没有GUI意味着一旦程序运行它就开始收听Socket并在Netbeans IDE的帮助下获得响应.现在按照我的要求,我必须在Linux系统启动后立即开始执行该程序.
其实我是Java和Linux平台的新手,所以很少有人怀疑.
init.d是为了这个.我正在为通知下拉列表创建一个UIView子类.我正在使用XIB构建视图,并希望在初始化时将该xib分配给类(即避免必须从调用ViewController执行此操作).
由于你无法在swift中分配给'self',我如何从类本身中正确地执行此操作?
class MyDropDown: UIView
{
func showNotification()
{
self = UINib(nibName: nibNamed, bundle: bundle).instantiateWithOwner(nil, options: nil)[0] as? UIView
}
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个C程序来在Linux系统上执行各种操作,然后将其关闭.这个程序将init=/path/to/program使用PID 1 的命令行选项启动,因此,我无法使用execl("/sbin/poweroff", "poweroff", NULL);,因为该poweroff命令不会关闭系统本身,它会通过PID 1请求进程执行此操作.那么什么代码init用来关闭系统?
我是jax-rs的新手,并且已经建立了一个带有平针织物和玻璃鱼的网络服务.
我需要的是一个方法,一旦服务启动就会调用它.在这个方法中,我想加载自定义配置文件,设置一些属性,写一个日志,等等......
我尝试使用servlet的构造函数,但每次调用GET或POST方法时都会调用构造函数.
我有什么选择才能意识到这一点?
请告诉我,如果需要一些依赖项,请告诉我如何将它添加到pom.xml(或其他)