2015-08-21 10 views
15

Ich habe zwei Projekte in Xcode 6.4 geöffnet. Beide verwenden die Folge Erklärung:"__ weak typeof (self) weakself = self;" erwartet ; Am Ende der Deklaration

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

jedoch in einem Projekt gibt es keine Fehler gibt, und in dem anderen Projekt bekomme ich einen Compiler-Fehler:

Expected ';' at end of declaration 

Es will, dass ich ein Semikolon setzen nach __ weak typeof (selbst). Ich habe den Verdacht, dass ich nur etwas wirklich Dummes mache, aber ich habe Schwierigkeiten, herauszufinden, was. Außerdem weiß ich, dass ich die typeof(self) durch myClass * ersetzen könnte.

+0

Versuchen, diese Zeile zu entfernen und neu zu schreiben. – Bannings

+0

@Bannings Versucht, dass. Auch gereinigt und umgebaut. Neustart auch Xcode. Wenn ich putze, blitzt es den Fehler ein und aus, als ob er nicht entscheiden kann, was vor sich geht, und entscheidet sich schließlich für einen Fehler. –

+0

Was ist in der nächsten Zeile? – matt

Antwort

27

Verwenden Sie __typeof anstelle von typeof.

Dies liegt daran, dass beide __typeof und typeof Erweiterungen C, aber typeof ist nur in Clang aktiviert, wenn die Sprache eine GNUXX Variante C ist, aber nicht für CXX.

5

Ich hatte einen ähnlichen Fehler. @Leo Natan ist richtig und wenn Sie möchten, können Sie den C-Dialekt so zu GNU ändern:

im Projektnavigator über Projekt -> Target -> Build-Einstellungen

Es sucht C Sprache Dialect und ändere es von c11 oder c99 zu GNU99 und es wird das Problem lösen. Jetzt können Sie typeof() verwenden

Ich hoffe es hilft :)

+1

Dies sollte wirklich auf 'Compiler Default' gesetzt werden. –