我遇到了使用带lazy关键字的属性的非常奇怪的情况.我知道这个关键字表示在实际使用变量并且只运行一次之前,属性的初始化被推迟.
但是,我发现了一个运行初始化两次的情况.
class TestLazyViewController: UIViewController {
var name: String = "" {
didSet {
NSLog("name self = \(self)")
testLabel.text = name
}
}
lazy var testLabel: UILabel = {
NSLog("testLabel self = \(self)")
let label = UILabel()
label.text = "hello"
self.view.addSubview(label)
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
testLabel.setTranslatesAutoresizingMaskIntoConstraints(false)
NSLayoutConstraint.activateConstraints([NSLayoutConstraint(item: testLabel, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1.0, constant: 0.0)])
NSLayoutConstraint.activateConstraints([NSLayoutConstraint(item: testLabel, attribute: .CenterY, relatedBy: .Equal, toItem: self.view, attribute: .CenterY, multiplier: 1.0, …Run Code Online (Sandbox Code Playgroud) 我的iOS应用程序使用UIWebView上的youtube iframe播放器以内联模式播放任何剪辑.以下代码是使用的HTML代码.
<html>
<head>
<style type="text/css">body {background-color: transparent;color: white;}</style>
</head>
<body style="margin:0">
<iframe src="http://www.youtube.com/embed/e2w8z6mI47U?playsinline=1&rel=0&showinfo=0" width="320" height="240" frameborder="0" allowfullscreen></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后,它传递给loadHTMLString方法.
该代码在最近的日期之前运作良好.但是,我最近注意到我使用的每个剪辑都没有正常播放.显示待机视图和播放按钮,但是,虽然我按下播放按钮,但播放效果不佳.黑屏只显示.
我还没有找到解决问题的方法.是否有任何Youtube Iframe球员的变化或我错过的分数?
我正在尝试使用更改该文件夹上的desktop.ini以编程方式更改文件夹图标.我可以设置一个图标,但不能通过更改"IconIndex"立即更改它.该图标也会在几秒钟后更改.
有人知道如何立即更改图标吗?
我正在制作以下视图控制器(VC)结构.
[UINavigationViewController] - > [UIPageViewController] - > [UIViewControllers]
那么,这个VC应该支持纵向和横向.
我所遇到的一个问题是改变方向到任何一方.

你可以看到问题.

红色区域是UIPageViewController上子VC的背景颜色.
蓝色区域是UIPageViewController的背景颜色.
我猜孩子VC没有被UIPageViewController转发.我已经弄清楚了很久.我终于找到了一个解决方法,将以下重写函数添加到自定义 UIPageViewController.
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[self setViewControllers:self.viewControllers
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:NULL];
}
Run Code Online (Sandbox Code Playgroud)
虽然完成轮换后会显示向下移动视图.这段代码粗略地解决了这个问题.
无论如何,我真的想知道任何好的和自然的解决方案.
更新
我的应用程序在iOS6上运行良好.它可能是iOS7的bug?
最近,我在Array和Dictionary之间发现了不同的桥接.在下面的代码中,我尝试通过隐式桥接Array和Dictionary来检查正在创建的实例的地址.

如您所见,dic传递给unsafeAddressOf方法,该方法打印AnyObject传递的实例的地址.因为dic是Dictionary的值,所以它在传递给函数时会被转换为NSDictionary.因此,这种桥接将成为NSDictionary的新实例.因此,我预计调用两次会导致生成两个NSDictionary实例.但是,打印了相同的地址.似乎只有一个实例.
NSArray的实验似乎在我的假设中运作良好.
为什么他们的工作不同?
我在我的 iOS 项目中使用 Swift 代码,在使用 Swift 之前,该项目已经有很多 Objective C 源文件。不幸的是,自从我做出这个决定以来,我的构建时间就很长。
我知道 Swift 1.2 支持增量构建功能,但我不知道为什么该功能不起作用。
Xcode 设置中是否有用于增量构建的编译选项来解决该问题?或者我应该等待下一个版本的 Swift 和 Xcode?
另外,我使用支持 Swift 1.2 的 Xcode 6.4。
我创建了一个自定义容器视图控制器。它有两个子视图控制器。每个都设置一个 UIBarButtonItem 实例以self.navigationItem.rightBarButtonItem在导航栏上显示按钮。但是,什么也没有出现。
让它发挥作用的正确方法是什么?
以下代码是我在viewDidLoad容器视图控制器中使用的代码。
更新:
我将这里唯一的答案标记为正确的答案。就我的代码而言,@rdelmar 的解释是正确的。但是,我想指出一件事。基本上,如果子级应该在自定义控制器中使用,那么让任何子级 VC 期望导航控制器的存在并不是一个好方法。
如果我能回到过去,我会在容器上制作一些界面,让他们的孩子知道他们可以根据需要设置任何导航项。
[self addChildViewController:childVC];
[self.view addSubview:childVC.view];
[childVC didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud) 一旦在V8引擎代码中读取v8.h,我就可以找到以下宏.
#define TYPE_CHECK(T, S) \
while (false) { \
*(static_cast<T* volatile*>(0)) = static_cast<S*>(0); \
}
Run Code Online (Sandbox Code Playgroud)
我知道这是检查类型S是否与类型T兼容.在语句中,执行流如何进入while循环?while(false)表示条件始终为false.因此,while循环中的语句永远不会被执行.
结果,宏并不总是可用,是吗?
我知道带有问号的可选常量或变量需要感叹号才能访问其值.然后,我尝试使用以下代码检查它.
var aaa:String? = "3"
println("aaa = \(aaa!)")
Run Code Online (Sandbox Code Playgroud)
是.没关系.它在控制台输出上打印"3".我接受了下一次考试
var aaa:String? = "3"
println("aaa = \(aaa)")
Run Code Online (Sandbox Code Playgroud)
它还打印"3"没有任何错误消息.它运作良好.
我了解到Forced Unwrapping,需要感叹号才能访问Optional的值.但是,我可以在没有标记的情况下访问它.这样对吗?我想知道出了什么问题.我误会可选吗?
为什么Scala中乘法0.3和3的结果是0.89999999999999?
ios ×4
swift ×4
objective-c ×2
c++ ×1
desktop.ini ×1
ios7 ×1
iphone ×1
scala ×1
v8 ×1
windows ×1
xcode ×1
youtube-api ×1