プロパティが (保持) で定義されているため、合成されたセッターを使用して (self.overlay 構文を介して) 設定したインスタンスには、自動的に保持メッセージが送信されます。
// You're alloc'ing and init'ing an object instance, which returns an
// instance with a retainCount of 1.
UIView *tempOverlay = [[UIView alloc] initWithFrame:CGRectMake(160.0f, 70.0f, 150.0f, 310.0f)];
// The overlay property is defined with (retain), so when you assign the new
// instance to this property, it'll automatically invoke the synthesized setter,
// which will send it a retain message. Your instance now has a retain count of 2.
self.overlay = tempOverlay;
// Send a release message, dropping the retain count to 1.
[tempOverlay release];
あなたがするなら:
self.overlay = [[UIView alloc] initWithFrame:CGRectMake(160.0f, 70.0f, 150.0f, 310.0f)];
オーバーレイの保持カウントが 2 になるため、アプリケーションのある時点でリークが発生する可能性があります。