2014-09-12 29 views
5

bir noktada ben buna benzer bir kod var hızlı bir uygulama geliştiriyorum için indeksleme sıkışmış: NedenseXcode Beta 6.1 ve Xcode 6 GM garip bir nedenle

import UIKit 

class ViewController: UIViewController { 
    private var a: UIImageView! 
    private var b: UIImageView! 
    private var c: UILabel! 
    private var d: UILabel! 
    private var e: UILabel! 
    private var f: UILabel! 
    private var g: UIView! 
    private var h: UIView! 
    private var i: UIView! 
    private var j: UIView! 
    private var k: UIImageView! 
    private var l: UIView! 
    private var m: UIView! 
    private var n: UIView! 
    private var o: UIView! 
    private var p: UIScrollView! 
    private var q: UIView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let viewBindingsDict = ["a" : a, 
      "b" : b, 
      "c" : c, 
      "d" : d, 
      "e" : e, 
      "f" : f, 
      "g" : g, 
      "h" : h, 
      "i" : i, 
      "j" : j, 
      "k" : k, 
      "l" : l, 
      "m" : m, 
      "n" : n, 
      "o" : o, 
      "p" : p] 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

, ben bu kodu eklediğinizde xcode sıkışır ve başka bir şey yapamam.

Etkinlik İzleyicisi'ni açarak, sourcekiservice'ı görüntüler ve% 100'den fazla CPU'yu kullanarak hızlıca geçirir.

Yukarıdaki kod ile bu örnek projeyi oluşturduk: https://dl.dropboxusercontent.com/u/1393279/aaaaaaa.zip

Ben ettik zaten denedim Sadece çalışmıyor vb dakika beklemeyi, yeniden, Xcode yeniden, türetilen verilerin temizlenmesi.

+0

Xcode 6'nın çeşitli betas'ları 15 sn için dizinlemeye asıldım. Bazen rahatsız oldum ve işi durdurdum ve hemen tekrar çalışmak zorunda kaldım. Soruyu GM tohumunda görmedim (henüz). Bir notta, "Xcode Beta 6.1" başlığından ... ha? Henüz Xcode 6.1 yok. – DBD

+2

Evet, var: https://developer.apple.com/xcode/downloads/ – Wak

+0

Hatam giderildi. – DBD

cevap

18

Benzer bir şey bana birkaç kez oldu ve ben çok sayıda satıra birden çok satıra bölünerek tarafından çözdüm.

Kodunuzu bir oyun alanında test ettim ve derhal,% 100 CPU'mdaki SourceKitService işlemini fark ettim.

Kodunuzda, gördüğüm en uzun ifade, sözlük başlatmasıdır, bu nedenle ilk yaklaşım, satır başına kısa bir öğe sayısıyla değişebilir hale getirilmesi ve başlatılmasıdır.

Swift sözlükleri için bir += operatör temin etmemektedir, bu yüzden ilk bir (@shucao şeref) ihtiyaç şu şekildedir:

senin araç grubu önüne aldığımızda
func +=<K, V> (inout left: Dictionary<K, V>, right: Dictionary<K, V>) -> Dictionary<K, V> { 
    for (k, v) in right { 
     left.updateValue(v, forKey: k) 
    } 
    return left 
} 

, sen sözlüğü başlatabilir:

Satır başına en fazla 5 öğe seçerek
var viewBindingsDict = ["a" : a, "b" : b, "c" : c, "d" : d, "e" : e] 
viewBindingsDict += ["f" : f, "g" : g, "h" : h, "i" : i, "j" : j] 
viewBindingsDict += ["k" : k, "l" : l, "m" : m, "n" : n, "o" : o] 
viewBindingsDict += ["p" : p] 

.

Ama kodunuzda dönüşmez olarak sözlüğünü ilan - hızlı ilanı sonrasındaki değişmez bir başlatmak için herhangi bir açıklama sağlamaz - Neyse biz başarmak için bir kapatma kullanabilirsiniz: Ben

let viewBindingsDict = {() -> [String:UIView] in 
    var bindings = ["a" : self.a, "b" : self.b, "c" : self.c, "d" : self.d, "e": self.e] 
    bindings += ["f": self.f, "g" : self.g, "h" : self.h, "i" : self.i, "j" : self.j] 
    bindings += ["k" : self.k, "l" : self.l, "m" : self.m, "n" : self.n, "o" : self.o] 
    bindings += ["p": self.p] 
    return bindings 
}() 
+3

Çalıştı. Teşekkürler. İlk defa böyle bir şey görüyorum. Swift henüz üretim için hazır değil. – Wak

+1

Bu XCode 6.0.1'de mi düzeltildi? Hala bu problemi alıyorum. – zeeple

+2

Xcode 6.1'e geçerken benzer bir şey yaşadım. Ben özel izin menüsü Data = [[<< Tüm tanımlarım >>]] gibi 35 satırlık kodlar içeren Sözlük Listesi Listesi olarak tanımlanan bir menü vardı. Xcode, hızlı işlemlerde% 100'de CPU ile "Dizin Oluşturma" hızlı kodda "asılıydı. Bunun yerine, menünün küçük bölümlerini dinamik olarak ekleyerek düzeltildi! Ben de bir Plist kullanmış olabilirim sanırım, ama konu bu değil. –

2

aynı sorun. Önceden derlenmiş üstbilgileri silmek ve elde edilen veriler düzeltmek için görünüyordu. Bunun kalıcı bir şekilde düzeltilip giderilmeyeceğinden emin değilim, ama şu an için çalışıyor.

+0

Benim için çalıştı, teşekkürler. –