Ich habe eine statische Instanzvariable, die in meiner gesamten Anwendung verwendet wird. Es hat Eigenschaften. Diese Eigenschaften werden durch meine Anwendung verwendet und scheinen ziemlich gut zu funktionieren. Manchmal werden die Eigenschaften jedoch vorzeitig freigegeben. Was merkwürdig ist, ist, dass das Objekt, das diese Eigenschaften zieht, einige behält und andere freigibt. Was wäre ein guter Weg, um sicherzustellen, dass die Eigenschaften meines Objekts nicht vorzeitig freigegeben werden.Statische Instanz, die Eigenschaften vorzeitig mit ARC freigibt
Edit: Es stellt sich heraus, dass das Problem nicht vorzeitige Freigabe überhaupt war. Es war ein Umstellungsproblem. Danke allen für Ihre Hilfe.
@interface Game : NSObject
@property (nonatomic, strong) PFObject *gameObject;
//@property (nonatomic, strong) Concept *concept; // Will need to add Concept Object to GameObject once it's wrapper is done
@property (nonatomic, strong) User *initialPlayer;
@property (nonatomic, strong) User *invitedPlayer;
@property (nonatomic, strong) User *lastPlayedPlayer;
@property (nonatomic, strong) NSDate *lastPlayedDate;
@property (nonatomic, strong) NSDate *timeOutDate;
@property (nonatomic, assign) int timerTicks;
@property (nonatomic, assign) int currentRoundNumber;
@property (nonatomic, strong) User *winnerPlayer;
@property (nonatomic, assign) int initialPlayerPoints;
@property (nonatomic, assign) int invitedPlayerPoints;
@property (nonatomic, assign) int currentPlayerPoints;
@property (nonatomic, assign) GameStatus status;
@property (nonatomic, assign) int initialPlayerTimeouts;
@property (nonatomic, assign) int invitedPlayerTimeouts;
@property (nonatomic, assign) BOOL isInitialPlayer;
@property (nonatomic, strong) NSMutableDictionary *rounds;
@property (nonatomic, strong, readonly) Round *currentRound;
+(void)getActiveUserGameObjects:(PFUser *)user target:(id)target selector:(SEL)selector;
+(void)getYourTurnGameObjects:(PFUser *)user target:(id)target selector:(SEL)selector;
+(void)getTheirTurnGameObjects:(PFUser *)user target:(id)target selector:(SEL)selector;
+(void)getGameObjects:(PFUser *)user yourTurn:(id)yourTurn target:(id)target selector:(SEL)selector;
+(Game*)currentGame;
+(void)setCurrentGame:(Game*)currentGame;
..
//.m @implementation
..
static Game *sharedInstance = nil;
..
+(Game*)currentGame
{
return sharedInstance;
}
+(void)setCurrentGame:(Game*)currentGame
{
sharedInstance = currentGame;
}
...
#pragma mark - Player Setters and Getters
-(void)setInvitedPlayer:(User *)invitedPlayer
{
if (nil != invitedPlayer.userObject)
{
[self.gameObject setObject:invitedPlayer.userObject forKey:GAME_INVITED_PLAYER];
}
}
-(User*)invitedPlayer
{
NSObject *value = [self.gameObject objectForKey:GAME_INVITED_PLAYER];
if ([value isKindOfClass:[PFUser class]])
{
return [User userFromPFUser:(PFUser*)value];
}
return nil;
}
Welche momorialen Attribute verwenden Sie für Ihre Eigenschaften? – Matthias
Veröffentlichen Sie Ihre Kopfzeile, niemand kann feststellen, wie Sie die Eigenschaften von dem, was Sie gepostet haben, definiert haben. – Sam
Testen Sie Ihre App mit dem Zombies-Gerät. Dadurch erhalten Sie die vollständige Retain/Release-Historie eines Objekts, das zu oft freigegeben wurde. –