谁能解释一下是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我已经阅读了一些东西,但对我来说并不清楚,所以请尽可能简单地解释
我刚创建了我的第一个Swift项目,在AppDelegate.swift
一个类声明上面有一行 - 为什么它在那里?!
...
import UIKit
import CoreData
@UIApplicationMain // <- WHY IS IT HERE?
class AppDelegate: UIResponder, UIApplicationDelegate {
...
Run Code Online (Sandbox Code Playgroud) 如何在基于用户交互(或缺少用户交互)的iOS应用程序中添加计时器?换句话说,如果2分钟内没有用户交互,我想让应用程序执行某些操作,在这种情况下导航到初始视图控制器.如果在1:55有人触摸屏幕,则计时器重置.我认为这需要一个全局计时器,所以无论你在哪个视图,缺乏交互启动计时器.虽然,我可以在每个视图上创建一个独特的计时器.有没有人有任何建议,链接或示例代码,以前这样做过?
我一直认为函数和方法是一样的,直到我通过"Swift编程语言"电子书学习Swift.我发现我不能greet("John", "Tuesday")
用来调用我在类中声明的函数,如下面屏幕截图中的电子书所示:
我收到一条错误,说"根据此屏幕截图,错过了参数标签'日:'正在通话中 ":
这是代码: -
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编程时从未意识到这种差异.
Swift中的函数和方法有什么区别?
我们何时使用函数?何时使用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?
我正在为讲俄语的人开发应用程序.俄罗斯附近的很多国家都有第二语言 - 俄语.我的应用程序有两个本地化:俄语和英语.我需要设置默认的俄语本地化.英语应仅适用于使用英语的人,如设备的语言.
我知道Apple建议在设置中优先使用本地优先语言,但我有一个重要的理由不遵循此建议.
如何设置默认的俄语本地化?
我没有目标C的经验,所以我遇到了一些符号的问题.在我的"AppDelegate.swift"文件中,顶部有一个"@UIMainApplication".这是什么意思?
另外,如果可能的话,您能否在C++中给我"等效"声明(如果存在)?
谢谢.
首先,让我说我明白使用PT_DENY_ATTACH如下所述:
Bugging Debuggers是没用的.
但是,为了理解iOS的工作原理,我仍然想知道:在处理Swift项目时是否可以做类似的事情?由于Objective-C是基于C构建的,因此main(int argc, char *argv[])
可以利用一个函数来阻止gdb附加到进程.
如何在Swift中完成?我主要是想了解Swift中的应用程序生命周期,但是,我能找到的大多数解释都是针对ObjC的.
任何人都知道快速应用程序的启动顺序?正如我所看到的,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将在此处创建.但对于快速的应用程序,我想知道谁在创建这些.
如果有人知道,请分享您的想法.
(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
.
搜索"UIViewController"的文档,并查看"配置视图旋转设置".在Discussion
"不要使用此属性来通知布局决策.而是使用UIApplication类参考中statusBarOrientation
描述的属性 …
swift ×7
ios ×6
xcode ×4
objective-c ×2
cocoa-touch ×1
function ×1
ipad ×1
iphone ×1
methods ×1
nsrunloop ×1
orientation ×1
swift3 ×1
timer ×1
xcode8-beta6 ×1