2015-08-21 11 views
15

Xcode 6.4'te iki tane açık projem var."__weak typeof (self) weakSelf = kendini;" beklenen ; Açıklama sonunda

- (void)startService 
{ 
    __weak typeof(self) weakSelf = self; 
    [self.messageOperationQueue addOperationWithBlock:^{ 
     NSDictionary *storedMessages = [mySettings get:kStorageName withDefault:@{} storageType:kMySettingsStorageTypeDiskMapped]; 
     [weakSelf.messages addEntriesFromDictionary:storedMessages]; 
    }]; 
} 

Ancak bir projede hiç hata olmadığından ve diğer projede bir derleyici hatası alıyorum:

Expected ';' at end of declaration 

bir noktalı virgül koymak istiyor Hem takip beyanı kullanmak __weak typeof (self) sonra. Gerçekten aptalca bir şey yaptığımı, ama ne olduğunu anlamakta zorlandığım şüphesi var. Ayrıca, typeof(self)'u myClass * ile değiştirebileceğimi biliyorum.

+0

bu satırı çıkarıp yeniden yazmak çalışıyorum umarım. – Bannings

+0

@Bannings bunu denedi. Ayrıca temizlendi ve yeniden oluşturuldu. Xcode ayrıca yeniden başlatıldı. Temizlediğimde, ne olduğuna karar veremediği gibi, hatayı açık ve kapalı olarak yanıp söner, sonuçta bir hataya karar verir. –

+0

Sonraki satırda ne var? – matt

cevap

27

typeof yerine __typeof kullanın. __typeof ve typeof hem uzantıları C çünkü

Bu

, ancak dil değil CXX için, C GNUXX varyantı olduğunda typeof sadece Clang etkindir.

5

Benzer bir hata yaşadım. @Leo Natan haklı ve isterseniz, aşağıdaki gibi GNU C lehçesini değiştirebilirsiniz: Proje Navigator Projesi'nde gitmek yılında

-> Target -> Ayarlar

Orada

C Dil Lehçesi aramaya kurmak ve c11 veya c99'dan GNU99'a değiştirin ve sorunu çözecektir. Şimdi kullanabilirsiniz typeof()

Ben yardımcı olur :)

+1

Bu gerçekten "Derleyici Varsayılanı" olarak ayarlanmalıdır. –

İlgili konular