相关疑难解决方法(0)

了解NSRunLoop

谁能解释一下是NSRunLoop什么?所以我知道这NSRunLoop是一件与之相关的事情NSThread吗?所以假设我创建一个类似的线程

NSThread* th=[[NSThread alloc] initWithTarget:self selector:@selector(someMethod) object:nil];
[th start];

-(void) someMethod
{
    NSLog(@"operation");
}
Run Code Online (Sandbox Code Playgroud)

在这个线程完成他的工作之后?为什么使用RunLoops或在哪里使用?从Apple docs我已经阅读了一些东西,但对我来说并不清楚,所以请尽可能简单地解释

cocoa-touch objective-c nsrunloop ios

100
推荐指数
3
解决办法
6万
查看次数

"@UpppplicationMain"是什么意思?

我刚创建了我的第一个Swift项目,在AppDelegate.swift一个类声明上面有一行 - 为什么它在那里?!

...
import UIKit
import CoreData

@UIApplicationMain // <- WHY IS IT HERE?
class AppDelegate: UIResponder, UIApplicationDelegate {
... 
Run Code Online (Sandbox Code Playgroud)

swift

73
推荐指数
4
解决办法
2万
查看次数

iOS在不活动一段时间后执行操作(无用户交互)

如何在基于用户交互(或缺少用户交互)的iOS应用程序中添加计时器?换句话说,如果2分钟内没有用户交互,我想让应用程序执行某些操作,在这种情况下导航到初始视图控制器.如果在1:55有人触摸屏幕,则计时器重置.我认为这需要一个全局计时器,所以无论你在哪个视图,缺乏交互启动计时器.虽然,我可以在每个视图上创建一个独特的计时器.有没有人有任何建议,链接或示例代码,以前这样做过?

xcode timer ios

56
推荐指数
3
解决办法
5万
查看次数

Swift中的函数和方法有什么区别?

我一直认为函数和方法是一样的,直到我通过"Swift编程语言"电子书学习Swift.我发现我不能greet("John", "Tuesday")用来调用我在类中声明的函数,如下面屏幕截图中的电子书所示:

swift中的函数声明

我收到一条错误,说"根据此屏幕截图,错过了参数标签'日:'正在通话中 ":

swift中的错误消息

这是代码: -

import Foundation
import UIKit

class ViewController2: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        //var dailyStatement = greet("John", "Tuesday")
        var dailyStatement = greet("John", day: "Tuesday")
        println(dailyStatement)
    }

    func greet(name: String, day: String) -> String {
        return "Hello \(name), today is \(day)."
    }
}
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我发现了这篇文章:方法和函数之间的区别,在我看来,我在类中声明的函数实际上被称为方法.因此,与用于调用函数的语法相比,我用于调用方法的语法是不同的.

我在Objective-C编程时从未意识到这种差异.

  1. Swift中的函数和方法有什么区别?

  2. 我们何时使用函数?何时使用Swift中的方法?

methods function swift

46
推荐指数
4
解决办法
2万
查看次数

Xcode 8 beta 6:main.swift无法编译

我们有一个自定义的UIApplication对象,所以我们的main.swift是

import Foundation
import UIKit

UIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFromClass(MobileUIApplication), NSStringFromClass(AppDelegate))
Run Code Online (Sandbox Code Playgroud)

这在Xcode 8 beta 5中不起作用,所以我们使用了这个

//TODO Swift 3 workaround? https://forums.developer.apple.com/thread/46405
UIApplicationMain( Process.argc, UnsafeMutablePointer<UnsafeMutablePointer<CChar>>(Process.unsafeArgv), nil, NSStringFromClass(AppDelegate.self))
Run Code Online (Sandbox Code Playgroud)

在Xcode 8 beta 6上,我们使用未解析的标识符'Process'

我们需要在Xcode 8 beta 6/Swift 3中做些什么才能定义UIApplicationMain?

xcode program-entry-point swift swift3 xcode8-beta6

23
推荐指数
2
解决办法
6755
查看次数

设置iOS应用的默认本地化

我正在为讲俄语的人开发应用程序.俄罗斯附近的很多国家都有第二语言 - 俄语.我的应用程序有两个本地化:俄语和英语.我需要设置默认的俄语本地化.英语应仅适用于使用英语的人,如设备的语言.

我知道Apple建议在设置中优先使用本地优先语言,但我有一个重要的理由不遵循此建议.

如何设置默认的俄语本地化?

iphone xcode objective-c ios

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

什么'@'符号在Swift中意味着什么?

我没有目标C的经验,所以我遇到了一些符号的问题.在我的"AppDelegate.swift"文件中,顶部有一个"@UIMainApplication".这是什么意思?

另外,如果可能的话,您能否在C++中给我"等效"声明(如果存在)?

谢谢.

swift

13
推荐指数
2
解决办法
5597
查看次数

Swift中的iOS反盗版

首先,让我说我明白使用PT_DENY_ATTACH如下所述: Bugging Debuggers是没用的.

但是,为了理解iOS的工作原理,我仍然想知道:在处理Swift项目时是否可以做类似的事情?由于Objective-C是基于C构建的,因此main(int argc, char *argv[])可以利用一个函数来阻止gdb附加到进程.

如何在Swift中完成?我主要是想了解Swift中的应用程序生命周期,但是,我能找到的大多数解释都是针对ObjC的.

ios swift

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

推出Swift应用程序序列

任何人都知道快速应用程序的启动顺序?正如我所看到的,main在快速应用程序中没有任何功能.那么谁负责这样做

// Entry point of a normal iOS app
int main(int argc, char * argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
Run Code Online (Sandbox Code Playgroud)

您的应用程序对象和AppDelegate将在此处创建.但对于快速的应用程序,我想知道谁在创建这些.

如果有人知道,请分享您的想法.

ios swift

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

使用statusBarOrientation的iPad设备方向

(Xcode 6,Swift,iOS8)

我试图找到iPad的设备方向,它似乎是不必要的复杂.我哪里错了?

起初,我尝试使用interfaceOrientation我的UIViewController,但它不可靠并且已弃用.Apple建议使用statusBarOrientation属性.(1)

statusBarOrientation属于类型UIApplication.我试图像这样创建一个实例:

var o: UIApplication
Run Code Online (Sandbox Code Playgroud)

然后测试:

if (o.statusBarOrientation.isLandscape) { ... }
Run Code Online (Sandbox Code Playgroud)

但收到错误

Variable 'o' used before being initialized.
Run Code Online (Sandbox Code Playgroud)

这对我毫无意义.为什么我要将它初始化为一个值?我会覆盖我想要的价值!?

然后我尝试按照文档中的建议创建一个变量:

var statusBarOrientation: UIInterfaceOrientation
Run Code Online (Sandbox Code Playgroud)

但是跟踪:

statusBarOrientation =(UIKit.UIInterfaceOrientation)(0xa0)

所以我尝试将UIApplication子类化,并通过我的子类访问该属性.

从这里开始,更加复杂.似乎"每个应用程序必须只有一个UIApplication实例(或UIApplication的子类)." (2)

这导致我发表以下帖子,这似乎Main在Swift中创建了一个例程?!
使用Swift子类UIApplication

同样,我的目标是获取当前的设备方向,并在条件下进行测试.Pseudocoded:

var o = (get device orientation)
if (o == portrait ) { ... } else { ... }
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我在杂草中...任何帮助都将非常感激.

编辑:我确实设法让它与以下工作类似:

var o = UIApplication.sharedApplication().statusBarOrientation;
if (o.isLandscape) { ...
Run Code Online (Sandbox Code Playgroud)

但是,在初始加载时,当设备旋转到横向时,o.isLandscape报告为false.

  1. 搜索"UIViewController"的文档,并查看"配置视图旋转设置".在Discussion"不要使用此属性来通知布局决策.而是使用UIApplication类参考中statusBarOrientation描述的属性 …

xcode orientation ipad ios swift

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