小编Kyo*_*ang的帖子

lazy var属性初始化两次是正常的吗?

我遇到了使用带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)

lazy-initialization ios swift

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

最近没有在UIWebView上播放iframe播放器的youtube剪辑

我的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球员的变化或我错过的分数?

objective-c youtube-api ios

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

更改desktop.ini时,如何立即重新加载文件夹图标

我正在尝试使用更改该文件夹上的desktop.ini以编程方式更改文件夹图标.我可以设置一个图标,但不能通过更改"IconIndex"立即更改它.该图标也会在几秒钟后更改.

有人知道如何立即更改图标吗?

windows windows-shell desktop.ini

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

UINavigationController上的UIPageViewController在更改方向后不会重新布局其子视图控制器

我正在制作以下视图控制器(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?

iphone objective-c ios uipageviewcontroller ios7

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

数组和字典之间的不同桥接

最近,我在Array和Dictionary之间发现了不同的桥接.在下面的代码中,我尝试通过隐式桥接Array和Dictionary来检查正在创建的实例的地址.

在此输入图像描述

如您所见,dic传递给unsafeAddressOf方法,该方法打印AnyObject传递的实例的地址.因为dic是Dictionary的值,所以它在传递给函数时会被转换为NSDictionary.因此,这种桥接将成为NSDictionary的新实例.因此,我预计调用两次会导致生成两个NSDictionary实例.但是,打印了相同的地址.似乎只有一个实例.

NSArray的实验似乎在我的假设中运作良好.

为什么他们的工作不同?

swift

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

为什么当我修改项目中的任何 swift 文件时,所有 Objective C 源文件都会重新编译?

我在我的 iOS 项目中使用 Swift 代码,在使用 Swift 之前,该项目已经有很多 Objective C 源文件。不幸的是,自从我做出这个决定以来,我的构建时间就很长。

我知道 Swift 1.2 支持增量构建功能,但我不知道为什么该功能不起作用。

Xcode 设置中是否有用于增量构建的编译选项来解决该问题?或者我应该等待下一个版本的 Swift 和 Xcode?

另外,我使用支持 Swift 1.2 的 Xcode 6.4。

xcode swift

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

如何将子VC上创建的UIBarButtonItem设置为其父VC的导航控制器?

我创建了一个自定义容器视图控制器。它有两个子视图控制器。每个都设置一个 UIBarButtonItem 实例以self.navigationItem.rightBarButtonItem在导航栏上显示按钮。但是,什么也没有出现。

让它发挥作用的正确方法是什么?

以下代码是我在viewDidLoad容器视图控制器中使用的代码。

更新:
我将这里唯一的答案标记为正确的答案。就我的代码而言,@rdelmar 的解释是正确的。但是,我想指出一件事。基本上,如果子级应该在自定义控制器中使用,那么让任何子级 VC 期望导航控制器的存在并不是一个好方法。
如果我能回到过去,我会在容器上制作一些界面,让他们的孩子知道他们可以根据需要设置任何导航项。

[self addChildViewController:childVC];
[self.view addSubview:childVC.view];
[childVC didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)

uinavigationcontroller ios

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

关于V8的TYPE_CHECK宏中的C++语法的问题

一旦在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循环中的语句永远不会被执行.

结果,宏并不总是可用,是吗?

c++ v8

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

可以访问带有问号但没有感叹号的可选变量吗?

我知道带有问号的可选常量或变量需要感叹号才能访问其值.然后,我尝试使用以下代码检查它.

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的值.但是,我可以在没有标记的情况下访问它.这样对吗?我想知道出了什么问题.我误会可选吗?

swift

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

-4
推荐指数
2
解决办法
260
查看次数