小编Gre*_*ley的帖子

View Controller Containment如何在iOS 5中运行?

在2011年WWDC会话102,苹果推出视图控制器遏制,这是创建定制的视图控制器容器的能力,类似于UITabBarController,UINavigationController和类似物.

我多次看过这些例子.有一系列与这种模式相关的方法,但有点难以弄清楚它们.我将在这里发布我认为正在发生的事情,看看社区是否会确认或否定我的怀疑.

场景1:从无父节点移动到新的父视图控制器

[vc willMoveToParentViewController:self];
[self addChildViewController:vc];
[self.view addSubview:vc.view]; // or something like this.
[vc didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)

前两行必须按给定的顺序发生,还是可以反转?

场景2:从父视图控制器移动到没有父视图控制器

[vc willMoveToParentViewController:nil];
[vc.view removeFromSuperview];
[vc removeFromParentViewController];
Run Code Online (Sandbox Code Playgroud)

还有必要打电话[vc didMoveToParentViewController:nil]吗?会话102中的示例在这种情况下没有这样做,但我不知道这是否是遗漏.

场景3:从一个父视图控制器移动到另一个父视图控制器

这可能以下列方式发生,因为将封装每个父视图控制器中的逻辑.

// In the old parent
[vc willMoveToParentViewController:nil];
[vc.view removeFromSuperview];
[vc removeFromParentViewController];

// In the new parent
[vc willMoveToParentViewController:self];
[self addChildViewController:vc];
[self.view addSubview:vc.view];
[vc didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)

问题

我的主要问题是:一般来说,视图控制器包含应该如何工作?上面给出的机制是否正确?

是否有必要在打电话willMoveToParentViewController前打电话addChildViewController?这对我来说似乎是合乎逻辑的顺序,但它是否是必要的?

打电话didMoveToParentViewController:nil后有必要打电话removeFromParentViewController吗?

uiviewcontroller ios ios5

107
推荐指数
2
解决办法
5万
查看次数

如何摆脱Xcode中的"未使用的变量"警告?

我完全理解为什么会出现未使用的变量警告.我不想一般地压制它们,因为它们在大多数情况下非常有用.但是,请考虑以下(人为)代码.

NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);
Run Code Online (Sandbox Code Playgroud)

Xcode报告这saved是一个未使用的变量,当然它不是.我怀疑这是因为NSAssert1是一个宏.该NS_BLOCK_ASSERTIONS是宏没有定义,那么目标C断言肯定启用.

虽然它没有伤害任何东西,但我发现它不整洁且烦人,我想压制它,但我不知道该怎么做.将变量分配给自己可以摆脱编译器警告,但如果存在这样的事情,我宁愿以"正确"的方式进行.

xcode objective-c compiler-warnings unused-variables

96
推荐指数
9
解决办法
6万
查看次数

从命令行创建数据库

我正在尝试从命令行创建数据库.我的SO是centos,postgres是9.2

sudo -u postgres psql createdb test
Password for user test:
Run Code Online (Sandbox Code Playgroud)

为什么用户问我?

postgresql

64
推荐指数
6
解决办法
10万
查看次数

为什么我的T4模板会在文件名后附加一个数字?

为什么我的T4模板有时会在输出文件中附加一个数字,有时不会?例如,在一种情况下,我可能有一个名为的模板文件Foo.tt,我将得到一个输出文件Foo.cs.在其他情况下,我将获得一个输出文件Foo1.cs.在每种情况下,都没有其他 Foo.cs文件可能导致它附加一个数字.换句话说,它绝对不是任何明显的文件名冲突的结果.

我是一个深度肛门保持开发者,所以我很想知道如何摆脱那个无用的数字后缀.

t4 visual-studio

47
推荐指数
2
解决办法
3724
查看次数

带有Swift字符类型的NSCharacterSet.characterIsMember()

想象一下,你有一个Swift Character类型的实例,你想确定它是否是一个成员NSCharacterSet.NSCharacterSetcharacterIsMember方法需要unichar,所以我们需要从获得Characterunichar.

我能提出的唯一解决方案是以下,c我在哪里Character:

let u: unichar = ("\(c)" as NSString).characterAtIndex(0)
if characterSet.characterIsMember(u) {
    dude.abide()
}
Run Code Online (Sandbox Code Playgroud)

我看着Character但没有任何东西从我身上跳出来作为一种从中获取的方式unichar.这可能是因为Character更通用unichar,所以直接转换不安全,但我只是在猜测.

如果我迭代整个字符串,我会做这样的事情:

let s = myString as NSString
for i in 0..<countElements(myString) {
    let u = s.characterAtIndex(i)
    if characterSet.characterIsMember(u) {
        dude.abide()
    }
}
Run Code Online (Sandbox Code Playgroud)

(警告:以上是伪代码,从来没有任何人经营过.)但这并不是我所要求的.

swift

32
推荐指数
2
解决办法
8737
查看次数

为什么编译器不能在 Haskell 中为我们处理 newtype?

我知道newtype在编译时擦除类型构造函数作为优化,因此newtype Foo = Foo Int结果只是一个Int. 换句话说,我不是在问这个问题。我的问题不是关于什么newtype

相反,我试图理解为什么编译器在看到单值data构造函数时不能简单地应用这种优化本身。当我使用 时hlint,它足够聪明地告诉我单值data构造函数应该是newtype. (我从来没有犯过这个错误,但尝试过看看会发生什么。我的怀疑得到了证实。)

一个反对意见可能是,如果没有newtype,我们就不能使用GeneralizedNewTypeDeriving和其他这样的扩展。但这很容易解决。如果我们说……

data Foo m a b = Foo a (m b) deriving (Functor, Applicative, Monad)
Run Code Online (Sandbox Code Playgroud)

编译器可以直接告诉我们我们的愚蠢行为。

newtype当编译器总是可以自己解决时,为什么我们需要?

haskell

32
推荐指数
3
解决办法
1592
查看次数

iPhone上的压缩API

是否有可在iPhone上使用的压缩API?我们正在为我们的iPhone应用程序构建一些RESTful Web服务,但我们希望至少压缩一些对话以提高效率.

我不关心格式(ZIP,LHA,等等)是什么,并且它不需要是安全的.

一些受访者指出服务器可以压缩其输出,而iPhone可以消耗它.我们的情景正好相反.我们将压缩内容发布 Web服务.我们并不关心压缩的另一种方式.

compression iphone

30
推荐指数
3
解决办法
4万
查看次数

如何在OS X Leopard上的bash脚本中进行日期数学运算?

我意识到我可以用一个小的C或Ruby程序来做这个,但我希望我的脚本尽可能少的依赖.

鉴于这一点,如何在OS X上的bash脚本中进行日期数学计算?我见过一个帖子(在另一个网站上)有人做了以下事情:

date -d "-1 day"

但这似乎不适用于OS X.

附录:

有几个人评论并回应说Ruby,Python,Perl等是OS X的标准配置.我熟悉这三种语言,并且可以轻松编写一个可以满足我想要的脚本.事实上,我已经有了用Ruby编写的脚本.

所以也许我应该澄清"外部依赖"的含义.我的意思是,我不希望我的bash脚本必须调用其外部的任何其他脚本.换句话说,我希望它使用OS X的vanilla安装中可用的一些实用程序,并且已经在路径上.

但是,它看起来不可能,所以我将不得不使用我的外部依赖:Ruby脚本.

macos bash date-math

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

如何过滤J中的列表?

我目前正在学习迷人的J编程语言,但有一点我无法弄清楚如何过滤列表.

假设我有任意列表3 2 2 7 7 2 9,我想删除2s,但保持其他一切不变,即我的结果将是3 7 7 9.我怎么做到这一点?

j tacit-programming

19
推荐指数
3
解决办法
1557
查看次数

如何在保持隔离的同时使 Swift actor 符合协议?

假设我们有以下目标:

\n
    \n
  1. 我们想使用演员。
  2. \n
  3. 我们希望使用依赖注入并通过 DI 解析 actor。
  4. \n
  5. 我们希望将我们的参与者隐藏在协议后面,以便我们可以改变实现。
  6. \n
  7. 我们希望保持 Actor 的隔离,否则使用 Actor 就没有意义。
  8. \n
\n

所以具体的问题是:我们如何才能使 Swift actor 遵守协议,同时保持隔离?

\n
protocol Zippity {\n  func foo()\n}\n\nactor Zappity: Zippity {\n  func foo() {} // Doesn\'t compile\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我可以用 \xe2\x80\xa6 编译它

\n
actor Zappity: Zippity {\n  nonisolated func foo() {}\n}\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa6 但这似乎违背了目的。我还尝试声明接口方法async,但也无法编译。

\n

我可以想到几种合理的解决方法,包括组合、nonisolated async调用独立方法的方法等,但想看看是否有我遗漏的东西。

\n

concurrency actor swift swift5

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