我正在通過一些Cocoa教程,並且運行這個語法並且不知道它的含義。從上下文中我假設你爲變量設置了強類型。什麼「ID <someType> variableName」是什麼意思在Objective-C
id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo name];
我發現,通過移除<someType>
語法仍然允許我發送[sectionInfo name]
消息。所以很明顯,編譯器認識到id處的對象仍然是適當的類型,無論如何。
在Objective-C中,類型爲「id」的變量意味着它所保存的對象可以是* any * Objective-C類的一個實例,因此您可以調用** any **方法,編譯器不會抱怨。 – Greg 2013-05-12 04:32:28
此外,在任何情況下,Objective-C都不是**強類型語言,因此甚至像'NSNumber * a = @「Hello」; NSArray * b = a; [(NSMutableDictionary *)b setObject:@「asdf」forKey:@「something」];'會編譯,儘管有警告,只會在您嘗試在未實現的對象上調用setObject:forKey時崩潰該方法。 – Greg 2013-05-12 04:35:09