以下代码在Swift 1.2中编译:
class myClass {
static func myMethod1() {
}
class func myMethod2() {
}
static var myVar1 = ""
}
func doSomething() {
myClass.myMethod1()
myClass.myMethod2()
myClass.myVar1 = "abc"
}
Run Code Online (Sandbox Code Playgroud)
静态函数和类函数有什么区别?我应该使用哪一个,何时使用?
如果我尝试定义另一个变量class var myVar2 = ""
,它会说:
类中尚未支持的类存储属性; 你的意思是'静态'吗?
当支持这个特性时,静态变量和类变量之间的区别是什么(即两者都是在类中定义的)?我应该使用哪一个,何时使用?
(Xcode 6.3)
一个Xcode中5的新功能是一种特殊的注释语法来记录自己的代码的能力.格式类似于doxygen,但似乎只支持这些功能的子集.
支持哪些命令,哪些命令不支持?
他们的任何用法与doxygen有什么不同?
矢量支持如何在Xcode 6中工作?
当我尝试调整图像大小时,它看起来是锯齿状的,是什么给出的?
我最近更新到Xcode 7 beta 5.我尝试在早期项目中添加单元测试,但是我收到错误消息"没有这样的模块[myModuleName]"就@testable import myModuleName
行了.
我试过了
这项工作都没有用(但我已经在另一个项目中进行了测试).还有其他人有这个问题并解决了吗?
尝试通过源树推送时,我收到以下错误:
git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/master:refs/heads/master
Pushing to https://user@github.com/repo.git
To https://user@github.com/repo.git
= [up to date] master -> master
...
! [rejected] example_tag -> example_tag (already exists)
updating local tracking ref 'refs/remotes/origin/master'
error: failed to push some refs to 'https://user@github.com/repo.git'
hint: Updates were rejected because the tag already exists in the remote.
Completed with errors, see above
Run Code Online (Sandbox Code Playgroud)
据我所知,我没有对这个标签做任何改动.我怎样才能解决这个问题?
我有一个包含许多文件的文件夹.有没有简单的方法来获取目录中的文件名按创建日期/时间排序?
如果我使用Directory.GetFiles()
,它将返回按文件名排序的文件.
在阅读如何使用关联值测试Swift枚举的相等性之后,我实现了以下枚举:
enum CardRank {
case Number(Int)
case Jack
case Queen
case King
case Ace
}
func ==(a: CardRank, b: CardRank) -> Bool {
switch (a, b) {
case (.Number(let a), .Number(let b)) where a == b: return true
case (.Jack, .Jack): return true
case (.Queen, .Queen): return true
case (.King, .King): return true
case (.Ace, .Ace): return true
default: return false
}
}
Run Code Online (Sandbox Code Playgroud)
以下代码有效:
let card: CardRank = CardRank.Jack
if card == CardRank.Jack {
print("You played a jack!") …
Run Code Online (Sandbox Code Playgroud) 我有一个UIView,通过几个约束放在屏幕上.一些约束由superview拥有,其他约束由其他祖先拥有(例如,可能是UIViewController的view属性).
我想删除所有这些旧约束,并使用新约束将其置于新的位置.
如果不为每个约束创建一个IBOutlet并且必须记住哪个视图拥有所述约束,我该怎么做呢?
详细说明,天真的方法是为每个约束创建一堆IBOutlet,然后涉及调用代码,例如:
[viewA removeConstraint:self.myViewsLeftConstraint];
[viewB removeConstraint:self.myViewsTopConstraint];
[viewB removeConstraint:self.myViewsBottomConstraint];
[self.view removeConstraint:self.myViewsRightConstraint];
Run Code Online (Sandbox Code Playgroud)
这段代码的问题在于,即使在最简单的情况下,我也需要创建2个IBOutlet.对于复杂的布局,这可以轻松达到4或8个所需的IBOutlet.此外,我需要确保在正确的视图上调用我的删除约束的调用.例如,想象一下,myViewsLeftConstraint
拥有viewA
.如果我不小心打电话[self.view removeConstraint:self.myViewsLeftConstraint]
,什么都不会发生.
注意:方法constraintsAffectingLayoutForAxis看起来很有前景,但仅用于调试目的.
更新:很多我收到处理问题的答案self.constraints
,self.superview.constraints
或一些人的变种.这些解决方案不起作用,因为这些方法只返回视图所拥有的约束,而不是影响视图的约束.
要澄清这些解决方案的问题,请考虑以下视图层次结构:
现在假设我们创建了以下约束,并始终将它们附加到最近的共同祖先:
现在假设我们要删除所有影响的约束Me
.任何适当的解决方案应该删除[C0,C1,C2,C3,C4]
,没有别
如果我使用self.constraints
(自我就是我),我会得到[C0,C1,C7]
,因为这些是我拥有的唯一约束.显然,删除它是不够的,因为它丢失了[C2,C3,C4]
.此外,它正在C7
不必要地删除.
如果我使用self.superview.constraints
(自我就是我),我会得到[C2,C5]
,因为那些是父拥有的约束.显然我们无法删除所有这些因为C5
完全无关Me
.
如果我使用grandfather.constraints
,我会得到[C3,C4,C6]
.同样,我们无法删除所有这些,因为 …
Mogenerator的帮助很小.所有参数做什么?
如果我推动视图控制器和/或提供模态视图控制器UINavigationController
,我怎样才能找出最顶层的UIViewController
?或者在我的情况下,我想知道某个UITableViewController
是否是最重要的.
我试过用:
self.navigationController.topViewController == self
Run Code Online (Sandbox Code Playgroud)
......但这不起作用.我猜测它失败了,因为我在它上面呈现模态视图控制器,并且topViewController
只跟踪推送了哪些视图UINavigationController
(而不是那些以模态方式呈现的视图).
cocoa-touch objective-c uiviewcontroller uinavigationcontroller
objective-c ×3
ios ×2
swift ×2
xcode ×2
.net ×1
autolayout ×1
c# ×1
class ×1
cocoa-touch ×1
comments ×1
comparison ×1
constraints ×1
doxygen ×1
enums ×1
file ×1
function ×1
git ×1
mogenerator ×1
push ×1
static ×1
uiview ×1
unit-testing ×1
variables ×1
xcode5 ×1
xctest ×1