小编Dan*_*ark的帖子

基于类的通用返回类型

我正在尝试在一个类上创建工厂方法,该类会自动转换为它所在的类。

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 中做到这一点?

generics factory swift

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

iOS - @available 不保护此处的可用性;使用 if (@available) 代替

我正在使用下面的代码但收到警告,

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() 条件内,但不能放置在布尔变量中?

objective-c ios

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

Ruby中的RegEx:只有一场比赛?

我试图找出如何检查字符串是否匹配正则表达式,但我想知道整个字符串是否只匹配一次.这是我的代码,但似乎很荒谬

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)

编辑谢谢大家.这是我真正使用它的地方,但这个正则表达式的东西总是很有趣.感谢伟大而有教育意义的答案.

ruby regex

0
推荐指数
1
解决办法
2437
查看次数

用于滚动和缩放的UIWebView和PDF文件滞后

我正在使用UIWebView加载一个相对较小的PDF文件(140kb),即使这工作正常,我发现它在滚动和缩放时滞后很多.PDF是一张地图,所以上面有很多文字和线条,所以我想知道是否有办法以某种方式加速它以便一切运行得更顺畅?转换为PNG会更好吗?它更平滑,但转换后140kb的PDF变为1.2mb,所以我不知道这是不是一个好的解决方案.

任何意见,将不胜感激.

谢谢

iphone objective-c uiwebview

0
推荐指数
1
解决办法
6310
查看次数

Ruby读取行读取的不同文件大小

我需要做一些文件大小至关重要的事情.这产生了奇怪的结果

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 file-read

0
推荐指数
1
解决办法
354
查看次数

Ruby 中的类型无关比较

我确定这是 Ruby 中的一个基本问题:

有没有办法检查是否

a == b
Run Code Online (Sandbox Code Playgroud)

即使 a 是整数而 b 是字符串?我意识到我可以做到

a.to_s == b.to_s 
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有其他更好的方法。

ruby syntax

0
推荐指数
1
解决办法
231
查看次数

HTML页面上带有滚动条的固定大小的盒子?

我确信这个答案很简单......或者不是:

我有一个固定高度的网站.我希望在网站内有另一个带有可滚动HTML的框.一种方法是使用iFrame,但我想指定HTML内联(即,不使用外部文件).是否有任何其他HTML标记(或类似)允许我这样做?

如果我在这里咆哮错误的树,这也可能有助于了解:如何将长文本转换为固定布局?

html

0
推荐指数
1
解决办法
1780
查看次数

<%= yield%>在命名模板中不起作用

如果我的模板名为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)

无济于事.

templates ruby-on-rails

0
推荐指数
1
解决办法
489
查看次数

使用Javascript调用对象中的函数

我有一个像这样定义的对象:

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问题.

javascript oop

0
推荐指数
1
解决办法
187
查看次数

分配到保留属性时为什么不释放?

这个问题关系到这一个,但更简单.[我想我可能接近这些愚蠢问题的结尾,可以开始认真的事业:)].

我有一个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)

财产不应该将保留计数增加一个吗?

objective-c retaincount

0
推荐指数
1
解决办法
150
查看次数