pScene->release() ???

Why the replacescene test does “pScene~~>release”?
Why does it release layer and scene at the end, after creating them? :S
<pre>
void SceneTestLayer2::onReplaceSceneTran
{
CCScene* pScene = new SceneTestScene;
CCLayer* pLayer = new SceneTestLayer3;
pScene~~>addChild( pLayer, 0 );
CCDirector::sharedDirector()>replaceScene );
pScene
>release();
pLayer->release();
}

void SceneTestLayer2::onReplaceSceneTran(CCObject* pSender)
{
    CCScene* pScene = new SceneTestScene(); // pScene ref = 1
    CCLayer* pLayer = new SceneTestLayer3(); // pLayer ref = 1
    pScene->addChild( pLayer, 0 ); // pLayer ref = 2
    CCDirector::sharedDirector()->replaceScene( CCTransitionFlipX::transitionWithDuration(2, pScene) ); // pScene ref = 2
    pScene->release(); // pScene ref = 1
    pLayer->release(); // pLayer ref = 1
}

So once you use “replaceScene” you dont need it anymore and you have to delete it?

release: minus reference count
retain: add reference count
autorelease: engine will minus reference count at some point

An object is deleted only its reference count is equal to 0.

I think im a bit confused about how it works.
What is a “reference count”? What is release and retain?
Do i have to release the object everytime i “use” it?

Where can i read more about properties? (@property (nonatomic, retain))

I think you should learn about object-c. They are the feature of object-c.