小编Bil*_*ill的帖子

UIBarButtonItem导致此初始化程序继承问题的原因是什么?

我正在尝试创建一个简单的UIBarButtonItem的Swift子类:

class LabelBarButtonItem: UIBarButtonItem {
  let label: UILabel

  init(text: String) {
    self.label = UILabel(frame: CGRectZero)
    self.label.tintColor = UIColor.grayColor()
    super.init(customView: self.label)
    self.label.text = text
  }

  required init(coder aDecoder: NSCoder) {
      fatalError("init(coder:) has not been implemented")
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试实例化这个:

let countButton = LabelBarButtonItem(text: "0 items")
Run Code Online (Sandbox Code Playgroud)

代码编译正确但在运行时失败:

fatal error: use of unimplemented initializer 'init()' for class 'TestProject.LabelBarButtonItem'
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么在这种情况下会发生这种情况,或者一般来说是什么原则导致这个问题.在init(text)初始化应直接委托给init(customView)超类.为什么要init()打电话?它不应该涉及.

任何人都可以解释发生了什么吗?当我试图继承其他UIKit类时,会出现类似的问题

objective-c initializer designated-initializer swift

11
推荐指数
2
解决办法
2730
查看次数

如何为分组表视图设置背景图像?

我见过一些iPhone应用程序使用自定义图像作为分组UITableView的背景,而不是标准的灰色线条.

这是如何实现的?

iphone background image uitableview

10
推荐指数
3
解决办法
2万
查看次数

懒惰和I/O如何在Haskell中协同工作?

我正在努力深入了解Haskell中的懒惰.

我今天想象的是以下片段:

data Image = Image { name :: String, pixels :: String }

image :: String -> IO Image
image path = Image path <$> readFile path
Run Code Online (Sandbox Code Playgroud)

这里的吸引力是我可以简单地创建一个Image实例并传递它; 如果我需要图像数据,它将被懒惰地读取 - 如果不是,将避免读取文件的时间和内存成本:

 main = do
   image <- image "file"
   putStrLn $ length $ pixels image
Run Code Online (Sandbox Code Playgroud)

但它是如何实际工作的?懒惰如何与IO兼容?readFile是否会被调用,无论我是否访问,pixels image或者如果我从未引用它,运行时是否会将该thunk评估为未评估?

如果确实懒惰地读取了图像,那么I/O操作是否可能无序发生?例如,如果在调用后立即image删除文件怎么办?现在,putStrLn调用在尝试读取时将找不到任何内容.

haskell lazy-evaluation

10
推荐指数
2
解决办法
989
查看次数

使用performSelector:withObject:afterDelay:使用非对象参数

我想setEditing:animated:在一个表视图上调用稍微延迟.通常,我会使用performSelector:withObject:afterDelay:但是

  1. pSwOaD只接受一个参数
  2. 第二个参数setEditing:animated:是一个原始BOOL - 而不是一个对象

在过去,我会在我自己的班级中创建一个虚拟方法setTableAnimated,然后调用,[self performSelector:@selector(setTableAnimated) withObject:nil afterDelay:0.1f但这对我来说感觉很糟糕.

有没有更好的方法呢?

iphone cocoa objective-c

10
推荐指数
2
解决办法
6743
查看次数

为什么演员收到的消息是无序的?

我一直在研究actor模型(特别是Scala中的实现)但我无法理解为什么要求消息没有按特定顺序到达.

似乎至少有一些优雅的,基于actor的并发问题解决方案,只有消息按顺序到达时才会起作用(例如,生产者 - 消费者变体,延迟数据库写入,并发安全缓存).

那么为什么演员的消息没有按顺序到达?它是允许有效实现还是可以防止在订购消息时出现某种死锁?

concurrency scala actor

10
推荐指数
2
解决办法
1212
查看次数

如何在同一iOS设备上的两个应用程序之间传输文档?

我有一个iPhone应用程序,我的一些用户在他们的iPad上以仿真模式运行.我们正在考虑创建一个iPad优化的应用程序,它将是App Store中的一个单独的应用程序(更多功能,不同的价格点).

问题是:如果用户在iPad上运行iPhone应用程序然后购买我们的iPad优化版本,他们如何将数据从仅限iPhone的应用程序迁移到新的iPad应用程序中?

以下是我考虑过的一些替代方案:

  • 正如其他SO问题所建议的那样,安全钥匙串.问题是这只允许传输一小部分数据.我们的用户可能拥有数十兆字节的数据
  • 注册URI方案(也在其他SO问题中提出,似乎也只针对非常少量的数据设计)
  • 让用户将数据从仅限iPhone的应用程序上传到Dropbox或box.net等服务,然后从iPad版本再次下载该数据.优点是这些服务具有非常简单的API; 缺点是用户可能需要创建一个额外的帐户和/或下载另一个应用程序只是为了移动数据
  • 创建iCloud文档.不需要注册,但设置iCloud存储是轻率的,非常重要

是否有其他选项可以在同一设备上的两个应用程序之间传输数十兆字节的数据.

iphone file-transfer ios

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

使用HAML,Scaml或Jade with Play

是否可以在Play视图中使用Haml(或类似诱惑语言,如Scaml或Jade)?

haml scala playframework-2.0 scaml pug

10
推荐指数
2
解决办法
4745
查看次数

我的Play 2应用程序如何响应来自客户端的不同"Accept"标题?

在Rails中,我能够做类似以下的事情:

respond_to do |format|
  format.xml { ... }
  format.json { ... }
end
Run Code Online (Sandbox Code Playgroud)

并根据客户端在Accept标头中提供的内容执行相应的块.

我怎么能在Play 2.0(Scala)中做同样的事情?

我希望做一些看起来像这样的事情:

try {
  Resources.delete(id)
  Ok("done")
} 
catch { 
  case e: ClientReportableException =>
    ?? match { 
      case "application/xml" => Ok(<error>{e.message}</error>)
      case "application/json" => Ok(...)
  }
}
Run Code Online (Sandbox Code Playgroud)

是否有Play成语,或者我只是从请求中获取Accept标头的值?

scala playframework-2.0

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

我可以将项目代码导入Swift REPL吗?

Swift REPL很棒,但如果我可以从Xcode项目导入类,那就更好了.我尝试切换到我的项目目录并运行

$ swift
> import ProjectName
Run Code Online (Sandbox Code Playgroud)

但我得到了:

error: no such module 'ProjectName'
Run Code Online (Sandbox Code Playgroud)

是否有可能做到这一点?

xcode swift swift-playground

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

调度问题与自定义表视图控制器的通用子类

我的应用程序有一个所有表控制器的公共基类,当我定义该表控制器基类的通用子类时,我遇到了一个奇怪的错误.numberOfSections(in:)当且仅当我的子类是通用的时,才会调用该方法.

以下是我能做的最小的再现:

class BaseTableViewController: UIViewController {
  let tableView: UITableView

  init(style: UITableViewStyle) {
    self.tableView = UITableView(frame: .zero, style: style)

    super.init(nibName: nil, bundle: nil)
  }

  required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
  }

  // MARK: - Overridden methods

  override func viewDidLoad() {
    super. viewDidLoad()

    self.tableView.frame = self.view.bounds
    self.tableView.delegate = self
    self.tableView.dataSource = self

    self.view.addSubview(self.tableView)
  }
}

extension BaseTableViewController: UITableViewDataSource {
  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 0
  }

  func tableView(_ tableView: UITableView, …
Run Code Online (Sandbox Code Playgroud)

generics uitableview ios swift

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