import UIKit
import WebKit
import XWalkView
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var start_url = "index.html"
var xwalk_extensions = ["Extension.load"]
if let plistPath = NSBundle.mainBundle().pathForResource("manifest", ofType: "plist") {
if let manifest = NSDictionary(contentsOfFile: plistPath) {
start_url = manifest["start_url"] as? String ?? start_url
xwalk_extensions = manifest["xwalk_extensions"] as? [String] ?? xwalk_extensions
}
}
let webview = WKWebView(frame: view.frame, configuration: WKWebViewConfiguration())
webview.scrollView.bounces = false
view.addSubview(webview)
for name in xwalk_extensions {
if let ext: AnyObject = XWalkExtensionFactory.createExtension(name) {
webview.loadExtension(ext, namespace: name)
}
}
if let root = NSBundle.mainBundle().resourceURL?.URLByAppendingPathComponent("www") {
var error: NSError?
let url = root.URLByAppendingPathComponent(start_url)
if url.checkResourceIsReachableAndReturnError(&error) {
webview.loadFileURL(url, allowingReadAccessToURL: root)
} else {
webview.loadHTMLString(error!.description, baseURL: nil)
}
}
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
此代码导致无限循环的可能性有多大?
实际上它会导致无限循环。我怀疑是因为我没有接受Set key1 = map.keySet();
Iterator it1 = key1.iterator();
int cnt=0;
while (it1.hasNext()) {
cnt++;
}
,这是真的吗?
答案 0 :(得分:3)
是。在你不致电it1.next()
之前,它永远不会转移到下一个项目。 Beause it1.next()
将返回您在list / set中添加的对象。
答案 1 :(得分:1)
问题是,您没有在循环中调用CREATE TABLE cities (
"id" bigint NOT NULL,
state_id bigint NOT NULL,
district_id bigint NOT NULL,
"name" varchar(255) NOT NULL,
description varchar(1000),
created_by int NOT NULL,
modified_by int,
is_active char(1) NOT NULL,
created timestamp,
modified timestamp,
PRIMARY KEY ("id")
);
INSERT INTO cities(state_id, district_id, city_type, name, description,
created_by, modified_by, is_active, created, modified)
VALUES
(1, 1, '', 'Ramtek', null, 1, null, 'Y',
'2015-04-16 10:44:11', '2015-04-16 10:44:11');
,因此it1.next()
始终为真。换句话说,你永远不会移动到下一个项目。
it1.hasNext()
答案 2 :(得分:1)
实际上它会导致无限循环。我怀疑是因为我没有接受
it1.next();
,这是真的吗?
是的,这是真的。
但是,您可以更轻松地找到集合的计数:
int cnt = map.size();
答案 3 :(得分:1)
基本上,itl.hasNext()总是根据要在集合中处理的下一个值的可用性返回一个布尔值。假设指针位于某个位置x,如果位置x旁边存在某个元素,则hasNext()返回true,我的意思是存在x + 1个元素,
所以你必须使用itl.next(),它返回集合中的当前元素并将指针向前移动1.因此根据前面的例子,next()返回当前对象的位置x,并移动指针到下一个poiton。
但是要从集合中获取元素数量,您可以使用
collection_object.size()