Enhanced RTTI
Syntax
RTTI enables you to easily retrieve details on the methods, fields and properties of a class.
TRttiType = class(TRttiNamedObject)
public
  function GetMethods: TArray<TRttiMethod>; overload; virtual;
  function GetFields: TArray<TRttiField>; virtual;
  function GetProperties: TArray<TRttiProperty>; virtual;
It provides methods to easily get or set the value of a field.
TRttiField = class(TRttiMember)
public
  property FieldType: TRttiType read GetFieldType;
  function GetValue(Instance: Pointer): TValue; virtual;
  procedure SetValue(Instance: Pointer; const AValue: TValue); virtual;
Information on class methods including their return types and parameters can be easily discovered. Invoking the method is also made easy.
TRttiMethod = class(TRttiMember)
public
  function Invoke(Instance: TObject; const Args: array of TValue): TValue; overload;
  function GetParameters: TArray<TRttiParameter>; virtual; abstract;
  property ReturnType: TRttiType read GetReturnType;
  property IsConstructor: Boolean read GetIsConstructor;
  property IsDestructor: Boolean read GetIsDestructor;
Further reading
Introductory Tutorials
On day 4 of CodeRage 6, Robert Love introduces RTTI.
http://cc.embarcadero.com/item/28582
On day 4 of CodeRage 6, Robert Love shows several examples of where RTTI is useful.
http://cc.embarcadero.com/item/28583
Comprehensive Tutorials
Robert Love has an extensive series of articles on the new RTTI.
On day 4 of CodeRage 6, Robert Love delves into the RTL RTTI support files to fully understand how RTTI works.
http://cc.embarcadero.com/item/28584
TRttiContext
TValue
TRTTIType
Performance
A discussion about the speed difference between the old and new RTTI.
https://forums.embarcadero.com/thread.jspa?threadID=50113
Mason Wheeler on TValue performance
http://tech.turbu-rpg.com/100/tvalue-is-very-slow
Iztok Kacin compares the performance of TValue to variants, variant records and other similar structures.
http://www.cromis.net/blog/2010/03/tvalue-and-other-variable-like-implementation-tests/
Reducing executable size
Barry Kelly comments on reducing the amount of RTTI generated to stop execution size rising.
http://blogs.embarcadero.com/michaelrozlog/2009/08/31/36979#comment-1400
Exploring RTTI
Rodrigo Ruz has some articles on exploring the RTTI of an application.
Barry Kelly on using $STRONGLINKTYPES to include more RTTI data in your application.
http://stackoverflow.com/questions/2997761/delphi-rtti-unable-to-find-interface/3063748#3063748
Omissions in the RTTI
Eric Grange lists elements that currently have no RTTI generated for them.
http://delphitools.info/2010/09/15/missing-bits-in-delphi-rtti/
Mason Wheeler talks about the lack of RTTI for generic interfaces.
http://tech.turbu-rpg.com/194/rtti-errors-and-omissions-in-delphi-xe
Alex Ciobanu (Emb.) gives a workaround for the lack of RTTI for records
http://alex.ciobanu.org/?p=55
use cases
Daniele Teti discusses serializing objects to JSON.
http://www.danieleteti.it/?p=146
Daniele Teti is working on a Delphi Object Relational Mapper
http://www.danieleteti.it/?p=250
Mason Wheeler speculates on how a native LINQ could be build with the new RTTI.
http://tech.turbu-rpg.com/197/native-linq-under-active-development
Mason Wheeler is building a scripting engine using the new RTTI.
http://tech.turbu-rpg.com/296/rtti-generation-code-now-available
Robert Love persists objects to INI files with RTTI.
http://robstechcorner.blogspot.com/2009/10/ini-persistence-rtti-way.html
Pushing the envelope
Mason Wheeler uses RTTI to get access to a private variable.
http://tech.turbu-rpg.com/79/abusing-extended-rtti-for-fun-and-profit
Primoz Gabrijelcic uses RTTI to create and destroy objects without having to write a constructor and destructor.
http://www.thedelphigeek.com/2012/10/automagically-creating-object-fields.html