しかし2000年代中盤に入り、ゴル航空やアズールブラジル航空などの格安航空会社による運航便数が急増したことでサントス・ドゥモン空港の過密状況がピークに達し、リオデジャネイロとサンパウロを結ぶシャトル便を除く多くの国内線の発着が移ってきたことや、ブラジル経済の回復やブラジルへの観光客の急増に伴い、国内外からの乗り入れ航空会社や便数が急速に増加した。その結果、2007年には稼働率が70%以上に回復した上に、年間乗降客数が500万人の大台に回復し、2009年には700万人の利用客を記録するなど高い稼働率を記録するようになった。
しかし1985年に、それまで市内近郊に大型ジェット機の乗り入れが可能な国際空港を有していなかったサンパウロ市郊外にグアルーリョス国際空港が開港し、ブラジルのハブ空港としての地位をグアルーリョス国際空港に譲ることとなった。同時期にブラジルの経済状況が悪化し外国からの乗り入れ航空会社が減り、さらに経営難に陥ったヴァリグ・ブラジル航空が大幅に減便したことなどを受けて、1990年代以降には乗り入れ航空会社、便数とともに減少し、年間乗降客数が300万人を切り稼働率が30%を切るほどになった。また、この頃は空いている駐機スペースが、倒産したVASP航空やヴァリグ・ブラジル航空のボーイング737やマクドネル・ダグラスDC-10などの余剰航空機の保管場所として使用されていた。
1959年に首都がブラジリアに移転したものの、ブラジル経済が急成長した1970年代には、ブラジルの経済成長とそれに伴う航空需要の急増を受けて、2つの近代的な旅客ターミナルの新設が計画され、1977年から供用された。新しいターミナルは最新のデザインと各種設備が採用されたほか、ターミナルと直結した駐車場が完備され、また開港以来初めてボーディングブリッジが完備された。なおターミナルが新設された直後の1977年から1982年にかけて、エールフランスのアエロスパシアル・コンコルドがパリからダカール経由で週2便乗り入れていた。
その頃、ブラジル最大の都市で南アメリカの経済の中心地でもあるサンパウロ近郊には、ダグラスDC-7やボーイング377などの大型プロペラ機や、1950年代後半に就航したボーイング707やダグラス DC-8などの大型ジェット機が発着できる大規模な国際空港がなかったこともあり、開港以降リオデジャネイロだけでなく、ブラジルを代表するハブ空港として機能した。また、ブラジルのフラッグ・キャリアのヴァリグ・ブラジル航空やパンエア・ブラジル航空、REAL航空などのハブ空港としても機能し、さらにパンアメリカン航空や日本航空、エールフランスや南アフリカ航空など諸外国から多数のフラッグ・キャリアが乗り入れた。
第二次世界大戦後の航空拡張期に、当時のブラジルの首都のリオデジャネイロ市内中心部にあるサントス・ドゥモン空港が手狭になった上に、市内中心部の埋め立て地にあるという立地条件から拡張もままならなかったことを受けて、政府の主導で新空港の建設が計画された。様々な立地が検討された結果、リオデジャネイロとサンパウロを結ぶ幹線道路に隣接していた上に、1923年からブラジル海軍の航空基地として使用されていたガレオン基地に隣接して建設されることが決まり、1940年代後半に旅客ターミナルの建設が開始され、1952年に開港した。
Objective-Cのクラスは定義部と実装部に分かれており、通常定義部を.hファイル、実装部を.mファイルに記述する。後述のカテゴリによりクラス定義を複数のパートに分割できる。// クラスの定義 (MyObject.h)@interface MyObject : NSObject{    int val;    id obj;}+ (void)classMethod:(id)arg;  // クラスメソッド- (id)method:(NSObject*)arg1 with:(int)arg2;  // インスタンスメソッド。arg1は型付き@end// 実装 (MyObject.m)@implementation MyObject+ (void)classMethod:(id)arg{    // some operation}- (id)method:(NSObject*)arg1 with:(int)args2{    return obj;}// 典型的なinit- (id)init{    self = [super init]; // スーパークラスの呼びだし    if(self != nil)    {        val = 1;        obj = [[SomeClass alloc] init];    }    return self;}// deallocは自身のリソースを解放してからスーパークラスに回す- (void)dealloc{    [obj release];    [super dealloc];}@endメソッドにはクラスメソッドとインスタンスメソッドがあり、それぞれ接頭辞+及び-により区別される。クラスメソッドはクラスオブジェクトの操作に、インスタンスメソッドはインスタンスオブジェクトの操作に使用される。クラスメソッドは特にインスタンスオブジェクトの生成にも使用される事が多い。インスタンスメソッドは、インスタンスオブジェクトにメッセージを送信した際に起動され、クラスメソッドはクラスオブジェクトにメッセージを送信した際に起動する。なお、インスタンスメソッドとクラスメソッドは全く同じ名前のセレクタを指定して定義できる。いわゆるコンストラクタは存在しない。慣習として新規オブジェクトの生成は+allocで、初期化は-initで行われるが、プログラマが自由に別の特殊化したメソッドを定義することが可能であり、初期化中に別の初期化メソッドを呼びだす場合もある。一方デストラクタ（ファイナライザ）に相当するものは-dealloc、またはガベージコレクション使用時の-finalizeで、これらのメソッドはオブジェクトの破壊時に必ず呼び出される。selfは特殊な変数で、メソッドの実行時に自動的にレシーバが代入される。再代入も可能であり、-init等でスーパークラスの実装で自分自身を初期化し、正しい値が返った時のみ継続して初期化を行なうなどに利用される。オブジェクトの型はオブジェクトを特定のクラスに制限したい時に用いられる。ただしこれはソースコードでのみ意味を持ち、実行レベルでは全てidとして扱われる。また型付きのオブジェクトはインスタンス変数を構造体互換でアクセスできる。保護レベルはpublic（フリー）、protected（継承クラスのみ）、private（同一クラスのみ）があり、デフォルトはprotectedである。ただメモリ管理の一貫性などの理由から、ほとんどの場合アクセサを用いる。