私はObjective-CとC全般に不慣れです。私は周りを見回してきましたが、この問題の解決策を見つけることができませんでした。どんな助けでも大歓迎です。
次のグローバル変数があります
CCSprite* BackgroundImage;
CCSprite* BackgroundGhost;
CCSprite* Globe;
CCSprite* Logo;
私のinitでは、関数を呼び出し、グローバル変数をパラメーターとして渡します。
if(_ourDevice == iPad)
{
[self CustomCodeSetAssetForIpad:BackgroundImage ghost:BackgroundGhost TheGlobe:Globe AndTheLogo:Logo];
}
CustomCodeSetAssetForIpad のコードは次のとおりです。
-(void) CustomCodeSetAssetForIpad:(CCSprite*) _Background ghost:(CCSprite*) _BackgroundGhosts TheGlobe:(CCSprite*)_Globes AndTheLogo:(CCSprite*) _Logos
{
_Background = [CCSprite spriteWithFile:@"1028-768-sunray.png"];
_BackgroundGhosts = [CCSprite spriteWithFile:@"1028-768-sunray.png"];
_Globes = [CCSprite spriteWithFile:@"BigGlobe.png"];
_Logos = [CCSprite spriteWithFile:@"DefaultLogo.png"];
[_BackgroundGhosts setAnchorPoint:CGPointMake(0.5, 0)];
[_BackgroundGhosts setScale:2];
[_BackgroundGhosts setOpacity:120];
//[BackgroundGhost setPosition: CGPointMake(BackgroundGhost.position.x, BackgroundGhost.position.y-500)];
[_BackgroundGhosts setPosition:CGPointMake([[CCDirector sharedDirector]winSize].width/2, -100)];
[_Globes setAnchorPoint:CGPointMake(0.5, 0.5)];
[_Globes setScale:0.7];
[_Globes setPosition:CGPointMake([[CCDirector sharedDirector]winSize].width/2, -260)];
[_Logos setPosition:CGPointMake([self CenterOfTheScreen].x, [[CCDirector sharedDirector]winSize].height-[[CCDirector sharedDirector]winSize].height*0.2)];
[_Logos setScale:0.05];
}
最初の数行は、渡されたグローバル変数をインスタンス化します。ただし、関数が完了すると、それらのオブジェクトへの参照は失われます。関数にポインターを渡すと、オブジェクトがインスタンス化されるため、インスタンス化されたオブジェクトへの参照が保持されると思いました。ここで何か不足していますか?