我正在尝试在一个类上创建工厂方法,该类会自动转换为它所在的类。
extension NSObject {
// how can I get the return type to be the current NSObject subclass
// instead of NSObject?
class func create() -> NSObject {
return self.init()
}
// example: create(type: NSArray.self)
class func create<T:NSObject>(type:T.Type) -> T {
return T()
}
}
Run Code Online (Sandbox Code Playgroud)
示例二有效,但作为类方法没有任何优势:
let result = NSArray.create(type: NSArray.self)
Run Code Online (Sandbox Code Playgroud)
但我希望能够打电话:
let result = NSArray.create()
Run Code Online (Sandbox Code Playgroud)
而不必事后施法。有没有办法在 Swift 中做到这一点?
我正在使用下面的代码但收到警告,
bool versionSupports = (@available(iOS 10, *));
Run Code Online (Sandbox Code Playgroud)
@available 并不保护此处的可用性;使用 if (@available) 代替
有一个解决方案我可以使用
if (@available(iOS 10, *)){
//compile
}else{
//fallback
}
Run Code Online (Sandbox Code Playgroud)
我很好奇,为什么输出可以放置在 if() 条件内,但不能放置在布尔变量中?
我试图找出如何检查字符串是否匹配正则表达式,但我想知道整个字符串是否只匹配一次.这是我的代码,但似乎很荒谬
def single_match(test_me, regex)
ret_val = false
test = regex.match(test_me)
if (test.length==1 && test[0].length == test_me.length)
ret_val = true
end
return ret_val
end
Run Code Online (Sandbox Code Playgroud)
有更简单的方法吗?
PS这是我真正想写的方法,因为人们似乎总是在问这些天我为什么要拿枪?
def is_int(test_me)
return single_match(test_me, /[0-9]*/)
end
Run Code Online (Sandbox Code Playgroud)
编辑谢谢大家.这是我真正使用它的地方,但这个正则表达式的东西总是很有趣.感谢伟大而有教育意义的答案.
我正在使用UIWebView加载一个相对较小的PDF文件(140kb),即使这工作正常,我发现它在滚动和缩放时滞后很多.PDF是一张地图,所以上面有很多文字和线条,所以我想知道是否有办法以某种方式加速它以便一切运行得更顺畅?转换为PNG会更好吗?它更平滑,但转换后140kb的PDF变为1.2mb,所以我不知道这是不是一个好的解决方案.
任何意见,将不胜感激.
谢谢
我需要做一些文件大小至关重要的事情.这产生了奇怪的结果
filename = "testThis.txt"
total_chars = 0
file = File.new(filename, "r")
file_for_writing = nil
while (line = file.gets)
total_chars += line.length
end
puts "original size #{File.size(filename)}"
puts "Totals #{total_chars}"
Run Code Online (Sandbox Code Playgroud)
像这样
original size 20121
Totals 20061
Run Code Online (Sandbox Code Playgroud)
为什么第二个出现短缺?
编辑:Answerers的预感是正确的:测试文件中有60行.如果我改变这一行
total_chars += line.length + 1
Run Code Online (Sandbox Code Playgroud)
它完美地运作.但是在*nix这个改变是错误的吗?
编辑:跟进现在在这里.谢谢!
我确定这是 Ruby 中的一个基本问题:
有没有办法检查是否
a == b
Run Code Online (Sandbox Code Playgroud)
即使 a 是整数而 b 是字符串?我意识到我可以做到
a.to_s == b.to_s
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有其他更好的方法。
我确信这个答案很简单......或者不是:
我有一个固定高度的网站.我希望在网站内有另一个带有可滚动HTML的框.一种方法是使用iFrame,但我想指定HTML内联(即,不使用外部文件).是否有任何其他HTML标记(或类似)允许我这样做?
如果我在这里咆哮错误的树,这也可能有助于了解:如何将长文本转换为固定布局?
如果我的模板名为layouts/application.erb,则<%= yield%>可以正常工作.但是,如果我将模板更改为其他内容,则yield不起作用.例如,我的控制器方法是
render :template=>'layouts/survey'
Run Code Online (Sandbox Code Playgroud)
并且渲染了正确的模板,但其yield方法不显示当前操作视图的输出.我错过了什么简单的事情?我也试过了
render :action=>"index", :template=>"layouts/survey"
Run Code Online (Sandbox Code Playgroud)
无济于事.
我有一个像这样定义的对象:
Blah = {
hideTimer:null,
setTimer: function() {
this.hideTimer = window.setTimeout(Blah.hidePopupInner, 500);
// must be done via window due to Greasemonkey
},
hidePopupInner: function() {
log("This? " + this);
},
hidePopupInnerPublic: function() {
Blah.hidePopupInner();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是killTimer中的'this' 没有设置为Blah.如果我改变行说
this.hideTimer = window.setTimeout(Blah.hidePopupInnerPublic, 500);
Run Code Online (Sandbox Code Playgroud)
然后'this'指向Blah,因此可以使用hideTimer.
为每种方法制定一个"公共"方法可以解决问题,但必须有一个更简单的解决方案......?
注意:这一切都在Greasemonkey中,但我认为这是一个普遍的Javascript问题.
这个问题关系到这一个,但更简单.[我想我可能接近这些愚蠢问题的结尾,可以开始认真的事业:)].
我有一个retain属性,并设置为这样:
UINavigationController *thing = [[UINavigationController alloc] initWithRootViewController:one];
// thing's retain count is one
navController = thing;
// thing's retain count is still one!
[thing release];
// now retain count is zero, which is wrong
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么保留计数变为零.navController被定义为
@property (nonatomic, retain) UINavigationController *navController;
Run Code Online (Sandbox Code Playgroud)
财产不应该将保留计数增加一个吗?