# HG changeset patch # User antonc27 # Date 1514593331 -3600 # Node ID 00215a7ec5f597fe9539ea4273758207d4123190 # Parent 2c06b1120749144d2ab8430f1ae2453d5a95b6f7 - BIG CHANGE: Convert iOS project to use ARC diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/AboutViewController.h --- a/project_files/HedgewarsMobile/Classes/AboutViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/AboutViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -26,11 +26,11 @@ NSArray *people; } -@property (nonatomic,retain) IBOutlet UITableView *tableView; -@property (nonatomic,retain) IBOutlet UISegmentedControl *segmentedControl; -@property (nonatomic,retain) NSArray *people; +@property (nonatomic, strong) IBOutlet UITableView *tableView; +@property (nonatomic, strong) IBOutlet UISegmentedControl *segmentedControl; +@property (nonatomic, strong) NSArray *people; --(IBAction) buttonPressed:(id) sender; --(IBAction) segmentedControlChanged:(id) sender; +- (IBAction)buttonPressed:(id)sender; +- (IBAction)segmentedControlChanged:(id)sender; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/AboutViewController.m --- a/project_files/HedgewarsMobile/Classes/AboutViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/AboutViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -23,11 +23,11 @@ @implementation AboutViewController @synthesize tableView, segmentedControl, people; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } --(void) viewDidLoad +- (void)viewDidLoad { [super viewDidLoad]; @@ -36,7 +36,6 @@ NSArray *array = [[NSArray alloc] initWithContentsOfFile:CREDITS_FILE()]; self.people = array; - [array release]; NSString *imgName; if (IS_IPAD()) @@ -45,16 +44,14 @@ imgName = @"smallerBackground~iphone.png"; UIImage *img = [[UIImage alloc] initWithContentsOfFile:imgName]; UIImageView *background = [[UIImageView alloc] initWithImage:img]; - [img release]; background.frame = self.view.frame; background.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [self.view insertSubview:background atIndex:0]; - [background release]; [self localizeSegmentedControl]; } --(IBAction) buttonPressed:(id) sender { +- (IBAction)buttonPressed:(id)sender { [[AudioManagerController mainManager] playBackSound]; [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; } @@ -70,7 +67,7 @@ } } --(IBAction) segmentedControlChanged:(id) sender { +- (IBAction)segmentedControlChanged:(id)sender { [[AudioManagerController mainManager] playClickSound]; [self.tableView setContentOffset:CGPointMake(0, 0) animated:NO]; [self.tableView reloadData]; @@ -91,7 +88,7 @@ UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; // first all the names, then the title (which is offset 5) cell.textLabel.text = [[self.people objectAtIndex:self.segmentedControl.selectedSegmentIndex] objectAtIndex:[indexPath row]]; @@ -105,7 +102,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // do nothing } @@ -113,7 +110,7 @@ return 95; } --(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger) section { +-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; char *fullver; int proto; @@ -133,33 +130,18 @@ label.textColor = [UIColor lightGrayColor]; label.numberOfLines = 5; label.text = footerString; - [footerString release]; label.backgroundColor = [UIColor clearColor]; [footer addSubview:label]; - [label release]; - return [footer autorelease]; + return footer; } #pragma mark - #pragma mark Memory Management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { self.people = nil; [super didReceiveMemoryWarning]; } --(void) viewDidUnload { - self.tableView = nil; - self.segmentedControl = nil; - self.people = nil; - [super viewDidUnload]; -} - --(void) dealloc { - releaseAndNil(tableView); - releaseAndNil(segmentedControl); - releaseAndNil(people); - [super dealloc]; -} - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/AudioManagerController.h --- a/project_files/HedgewarsMobile/Classes/AudioManagerController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/AudioManagerController.h Sat Dec 30 01:22:11 2017 +0100 @@ -33,26 +33,26 @@ NSOperationQueue *audioFaderQueue; } -@property (nonatomic,retain) AVAudioPlayer *backgroundMusic; +@property (nonatomic, strong) AVAudioPlayer *backgroundMusic; @property (assign) SystemSoundID clickSound; @property (assign) SystemSoundID backSound; @property (assign) SystemSoundID selSound; -@property (nonatomic,retain) NSOperationQueue *audioFaderQueue; +@property (nonatomic, strong) NSOperationQueue *audioFaderQueue; +(id) mainManager; --(void) playBackgroundMusic; --(void) pauseBackgroundMusic; --(void) stopBackgroundMusic; +- (void)playBackgroundMusic; +- (void)pauseBackgroundMusic; +- (void)stopBackgroundMusic; --(void) fadeInBackgroundMusic; --(void) fadeOutBackgroundMusic; +- (void)fadeInBackgroundMusic; +- (void)fadeOutBackgroundMusic; --(void) playClickSound; --(void) playBackSound; --(void) playSelectSound; +- (void)playClickSound; +- (void)playBackSound; +- (void)playSelectSound; -(SystemSoundID) loadSound:(NSString *)snd; --(void) unloadSounds; +- (void)unloadSounds; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/AudioManagerController.m --- a/project_files/HedgewarsMobile/Classes/AudioManagerController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/AudioManagerController.m Sat Dec 30 01:22:11 2017 +0100 @@ -37,7 +37,7 @@ return mainInstance; } --(id) init { +- (id)init { if ((self = [super init])) { self.backgroundMusic = nil; self.clickSound = -1; @@ -49,15 +49,12 @@ return self; } --(void) dealloc { +- (void)dealloc { [self unloadSounds]; - releaseAndNil(backgroundMusic); - releaseAndNil(audioFaderQueue); mainInstance = nil; - [super dealloc]; } --(void) didReceiveMemoryWarning { +- (void)didReceiveMemoryWarning { if (self.backgroundMusic.playing == NO) self.backgroundMusic = nil; if ([self.audioFaderQueue operationCount] == 0) @@ -69,7 +66,7 @@ #pragma mark - #pragma mark background music control --(void) playBackgroundMusic { +- (void)playBackgroundMusic { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"music"] boolValue] == NO) return; @@ -84,15 +81,15 @@ [self.backgroundMusic play]; } --(void) pauseBackgroundMusic { +- (void)pauseBackgroundMusic { [self.backgroundMusic pause]; } --(void) stopBackgroundMusic { +- (void)stopBackgroundMusic { [self.backgroundMusic stop]; } --(void) fadeOutBackgroundMusic { +- (void)fadeOutBackgroundMusic { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"music"] boolValue] == NO) return; @@ -103,10 +100,9 @@ toVolume:0.0 overDuration:FADEOUT_DURATION]; [self.audioFaderQueue addOperation:fadeOut]; - [fadeOut release]; } --(void) fadeInBackgroundMusic { +- (void)fadeInBackgroundMusic { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"music"] boolValue] == NO) return; @@ -118,7 +114,6 @@ toVolume:DEFAULT_VOLUME overDuration:FADEIN_DURATION]; [audioFaderQueue addOperation:fadeIn]; - [fadeIn release]; } #pragma mark - @@ -131,17 +126,17 @@ NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO]; // use audio sevices to create and play the sound - AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID); + AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID); return soundID; } --(void) unloadSounds { +- (void)unloadSounds { AudioServicesDisposeSystemSoundID(clickSound), clickSound = -1; AudioServicesDisposeSystemSoundID(backSound), backSound = -1; AudioServicesDisposeSystemSoundID(selSound), selSound = -1; } --(void) playClickSound { +- (void)playClickSound { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"sound"] boolValue] == NO) return; @@ -151,7 +146,7 @@ AudioServicesPlaySystemSound(self.clickSound); } --(void) playBackSound { +- (void)playBackSound { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"sound"] boolValue] == NO) return; @@ -161,7 +156,7 @@ AudioServicesPlaySystemSound(self.backSound); } --(void) playSelectSound { +- (void)playSelectSound { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"sound"] boolValue] == NO) return; diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/CampaignViewController.h --- a/project_files/HedgewarsMobile/Classes/CampaignViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/CampaignViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -20,6 +20,6 @@ @interface CampaignViewController : UITableViewController -@property (nonatomic, retain) NSString *campaignName; +@property (nonatomic, strong) NSString *campaignName; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/CampaignViewController.m --- a/project_files/HedgewarsMobile/Classes/CampaignViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/CampaignViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -21,7 +21,7 @@ #import "GameInterfaceBridge.h" @interface CampaignViewController () -@property (nonatomic, retain) NSArray *campaignMissions; +@property (nonatomic, strong) NSArray *campaignMissions; @end @implementation CampaignViewController @@ -40,7 +40,6 @@ IniParser *iniParser = [[IniParser alloc] initWithIniFilePath:campaignIniPath]; NSArray *parsedMissions = [iniParser newParsedSections]; - [iniParser release]; return parsedMissions; } @@ -52,7 +51,6 @@ UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismiss)]; self.navigationItem.rightBarButtonItem = doneButton; - [doneButton release]; [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"campaignMissionCell"]; } @@ -95,10 +93,5 @@ #pragma mark - Dealloc -- (void)dealloc { - [_campaignName release]; - [_campaignMissions release]; - [super dealloc]; -} @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/CampaignsViewController.m --- a/project_files/HedgewarsMobile/Classes/CampaignsViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/CampaignsViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -20,7 +20,7 @@ #import "CampaignViewController.h" @interface CampaignsViewController () -@property (nonatomic, retain) NSArray *campaigns; +@property (nonatomic, strong) NSArray *campaigns; @end @implementation CampaignsViewController @@ -48,7 +48,6 @@ } NSArray *campaigns = [tempCampaigns copy]; - [tempCampaigns release]; return campaigns; } @@ -59,7 +58,6 @@ UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismiss)]; self.navigationItem.rightBarButtonItem = doneButton; - [doneButton release]; [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"campaignCell"]; } @@ -100,14 +98,9 @@ campaign.campaignName = self.campaigns[indexPath.row]; [self.navigationController pushViewController:campaign animated:YES]; - [campaign release]; } #pragma mark - Dealloc -- (void)dealloc { - [_campaigns release]; - [super dealloc]; -} @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/CreationChamber.h --- a/project_files/HedgewarsMobile/Classes/CreationChamber.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/CreationChamber.h Sat Dec 30 01:22:11 2017 +0100 @@ -24,18 +24,18 @@ } -+(void) createFirstLaunch; -+(void) createSettings; ++ (void)createFirstLaunch; ++ (void)createSettings; -+(void) createTeamNamed:(NSString *)nameWithoutExt; -+(void) createTeamNamed:(NSString *)nameWithoutExt ofType:(NSInteger) type; -+(void) createTeamNamed:(NSString *)nameWithoutExt ofType:(NSInteger) type controlledByAI:(BOOL) shouldAITakeOver; ++ (void)createTeamNamed:(NSString *)nameWithoutExt; ++ (void)createTeamNamed:(NSString *)nameWithoutExt ofType:(NSInteger)type; ++ (void)createTeamNamed:(NSString *)nameWithoutExt ofType:(NSInteger)type controlledByAI:(BOOL) shouldAITakeOver; -+(void) createWeaponNamed:(NSString *)nameWithoutExt; -+(void) createWeaponNamed:(NSString *)nameWithoutExt ofType:(NSInteger) type; ++ (void)createWeaponNamed:(NSString *)nameWithoutExt; ++ (void)createWeaponNamed:(NSString *)nameWithoutExt ofType:(NSInteger)type; -+(void) createSchemeNamed:(NSString *)nameWithoutExt; -+(void) createSchemeNamed:(NSString *)nameWithoutExt ofType:(NSInteger) type; ++ (void)createSchemeNamed:(NSString *)nameWithoutExt; ++ (void)createSchemeNamed:(NSString *)nameWithoutExt ofType:(NSInteger)type; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/CreationChamber.m --- a/project_files/HedgewarsMobile/Classes/CreationChamber.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/CreationChamber.m Sat Dec 30 01:22:11 2017 +0100 @@ -23,7 +23,7 @@ @implementation CreationChamber #pragma mark Checking status -+(void) createFirstLaunch { ++ (void)createFirstLaunch { DLog(@"Creating necessary files"); NSInteger index; @@ -50,7 +50,6 @@ index = 0; for (NSString *name in teamNames) [self createTeamNamed:name ofType:index++ controlledByAI:[name isEqualToString:@"Robots"]]; - [teamNames release]; // SCHEMES - always overwrite and delete custom ones if ([[NSFileManager defaultManager] fileExistsAtPath:SCHEMES_DIRECTORY()] == YES) @@ -61,7 +60,6 @@ index = 0; for (NSString *name in schemeNames) [self createSchemeNamed:name ofType:index++]; - [schemeNames release]; // WEAPONS - always overwrite as merge is not needed (missing weaps are 0ed automatically) NSArray *weaponNames = [[NSArray alloc] initWithObjects:@"Default",@"Crazy",@"Pro Mode",@"Shoppa",@"Clean Slate", @@ -69,11 +67,10 @@ index = 0; for (NSString *name in weaponNames) [self createWeaponNamed:name ofType:index++]; - [weaponNames release]; } #pragma mark Settings -+(void) createSettings { ++ (void)createSettings { NSUserDefaults *settings = [NSUserDefaults standardUserDefaults]; [settings setObject:[NSNumber numberWithBool:NO] forKey:@"alternate"]; [settings setObject:[NSNumber numberWithBool:YES] forKey:@"music"]; @@ -90,15 +87,15 @@ } #pragma mark Teams -+(void) createTeamNamed:(NSString *)nameWithoutExt { ++ (void)createTeamNamed:(NSString *)nameWithoutExt { [self createTeamNamed:nameWithoutExt ofType:0 controlledByAI:NO]; } -+(void) createTeamNamed:(NSString *)nameWithoutExt ofType:(NSInteger) type { ++ (void)createTeamNamed:(NSString *)nameWithoutExt ofType:(NSInteger)type { [self createTeamNamed:nameWithoutExt ofType:type controlledByAI:NO]; } -+(void) createTeamNamed:(NSString *)nameWithoutExt ofType:(NSInteger) type controlledByAI:(BOOL) shouldAITakeOver { ++ (void)createTeamNamed:(NSString *)nameWithoutExt ofType:(NSInteger)type controlledByAI:(BOOL) shouldAITakeOver { NSString *teamsDirectory = TEAMS_DIRECTORY(); if (![[NSFileManager defaultManager] fileExistsAtPath: teamsDirectory]) { @@ -159,10 +156,7 @@ [customHats objectAtIndex:i],@"hat", nil]; [hedgehogs addObject:hog]; - [hog release]; } - [customHats release]; - [customNames release]; NSDictionary *theTeam = [[NSDictionary alloc] initWithObjectsAndKeys: @"0",@"hash", @@ -172,21 +166,18 @@ flag,@"flag", hedgehogs,@"hedgehogs", nil]; - [hedgehogs release]; NSString *teamFile = [[NSString alloc] initWithFormat:@"%@/%@.plist", teamsDirectory, nameWithoutExt]; [theTeam writeToFile:teamFile atomically:YES]; - [teamFile release]; - [theTeam release]; } #pragma mark Weapons -+(void) createWeaponNamed:(NSString *)nameWithoutExt { ++ (void)createWeaponNamed:(NSString *)nameWithoutExt { [self createWeaponNamed:nameWithoutExt ofType:0]; } -+(void) createWeaponNamed:(NSString *)nameWithoutExt ofType:(NSInteger) type { ++ (void)createWeaponNamed:(NSString *)nameWithoutExt ofType:(NSInteger)type { NSString *weaponsDirectory = WEAPONS_DIRECTORY(); if (![[NSFileManager defaultManager] fileExistsAtPath: weaponsDirectory]) { @@ -269,23 +260,17 @@ NSDictionary *theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys: qt,@"ammostore_initialqt", prob,@"ammostore_probability", delay,@"ammostore_delay", crate,@"ammostore_crate", nil]; - [qt release]; - [prob release]; - [delay release]; - [crate release]; NSString *weaponFile = [[NSString alloc] initWithFormat:@"%@/%@.plist", weaponsDirectory, nameWithoutExt]; [theWeapon writeToFile:weaponFile atomically:YES]; - [weaponFile release]; - [theWeapon release]; } #pragma mark Schemes -+(void) createSchemeNamed:(NSString *)nameWithoutExt { ++ (void)createSchemeNamed:(NSString *)nameWithoutExt { [self createSchemeNamed:nameWithoutExt ofType:0]; } -+(void) createSchemeNamed:(NSString *)nameWithoutExt ofType:(NSInteger) type { ++ (void)createSchemeNamed:(NSString *)nameWithoutExt ofType:(NSInteger)type { NSString *schemesDirectory = SCHEMES_DIRECTORY(); if (![[NSFileManager defaultManager] fileExistsAtPath: schemesDirectory]) { @@ -300,13 +285,11 @@ NSMutableArray *basicArray = [[NSMutableArray alloc] initWithCapacity:[basicSettings count]]; for (NSDictionary *basicDict in basicSettings) [basicArray addObject:[basicDict objectForKey:@"default"]]; - [basicSettings release]; NSArray *mods = [[NSArray alloc] initWithContentsOfFile:GAMEMODS_FILE()]; NSMutableArray *gamemodArray= [[NSMutableArray alloc] initWithCapacity:[mods count]]; for (NSUInteger i = 0; i < [mods count]; i++) [gamemodArray addObject:[NSNumber numberWithBool:NO]]; - [mods release]; switch (type) { default: // default @@ -422,14 +405,10 @@ basicArray,@"basic", gamemodArray,@"gamemod", nil]; - [gamemodArray release]; - [basicArray release]; NSString *schemeFile = [[NSString alloc] initWithFormat:@"%@/%@.plist", schemesDirectory, nameWithoutExt]; [theScheme writeToFile:schemeFile atomically:YES]; - [schemeFile release]; - [theScheme release]; } @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/DefinesAndMacros.h --- a/project_files/HedgewarsMobile/Classes/DefinesAndMacros.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/DefinesAndMacros.h Sat Dec 30 01:22:11 2017 +0100 @@ -24,14 +24,11 @@ #ifdef DEBUG #define DLog(...) NSLog(@"%s %@", __PRETTY_FUNCTION__, [NSString stringWithFormat:__VA_ARGS__]) #define ALog(...) [[NSAssertionHandler currentHandler] handleFailureInFunction:[NSString stringWithCString:__PRETTY_FUNCTION__ encoding:NSUTF8StringEncoding] file:[NSString stringWithCString:__FILE__ encoding:NSUTF8StringEncoding] lineNumber:__LINE__ description:__VA_ARGS__] - #define releaseAndNil(x) [x release] #else - #define DLog(...) do { } while (0) #ifndef NS_BLOCK_ASSERTIONS #define NS_BLOCK_ASSERTIONS #endif #define ALog(...) NSLog(@"%s %@", __PRETTY_FUNCTION__, [NSString stringWithFormat:__VA_ARGS__]) - #define releaseAndNil(x) [x release], x = nil #endif diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/EditableCellView.h --- a/project_files/HedgewarsMobile/Classes/EditableCellView.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/EditableCellView.h Sat Dec 30 01:22:11 2017 +0100 @@ -22,12 +22,12 @@ @protocol EditableCellViewDelegate --(void) saveTextFieldValue:(NSString *)textString withTag:(NSInteger) tagValue; +- (void)saveTextFieldValue:(NSString *)textString withTag:(NSInteger)tagValue; @end @interface EditableCellView : UITableViewCell { - id delegate; + id __weak delegate; UITextField *textField; UILabel *titleLabel; NSUInteger minimumCharacters; @@ -38,16 +38,16 @@ NSString *oldValue; } -@property (nonatomic,assign) id delegate; -@property (nonatomic,retain,readonly) UITextField *textField; -@property (nonatomic,retain,readonly) UILabel *titleLabel; -@property (nonatomic,assign) NSUInteger minimumCharacters; -@property (nonatomic,assign) NSUInteger maximumCharacters; -@property (nonatomic,assign) BOOL respectEditing; -@property (nonatomic,retain) NSString *oldValue; +@property (nonatomic, weak) id delegate; +@property (nonatomic, strong, readonly) UITextField *textField; +@property (nonatomic, strong, readonly) UILabel *titleLabel; +@property (assign) NSUInteger minimumCharacters; +@property (assign) NSUInteger maximumCharacters; +@property (assign) BOOL respectEditing; +@property (nonatomic, strong) NSString *oldValue; --(void) replyKeyboard; --(void) cancel:(id) sender; --(void) save:(id) sender; +- (void)replyKeyboard; +- (void)cancel:(id)sender; +- (void)save:(id)sender; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/EditableCellView.m --- a/project_files/HedgewarsMobile/Classes/EditableCellView.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/EditableCellView.m Sat Dec 30 01:22:11 2017 +0100 @@ -23,7 +23,7 @@ @implementation EditableCellView @synthesize delegate, textField, titleLabel, minimumCharacters, maximumCharacters, respectEditing, oldValue; --(id) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { +- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) { delegate = nil; @@ -40,14 +40,12 @@ [textField addTarget:self action:@selector(save:) forControlEvents:UIControlEventEditingDidEndOnExit]; [self.contentView addSubview:textField]; - //[textField release]; titleLabel = [[UILabel alloc] init]; titleLabel.textAlignment = NSTextAlignmentLeft; titleLabel.backgroundColor = [UIColor clearColor]; titleLabel.font = [UIFont boldSystemFontOfSize:[UIFont labelFontSize]]; [self.contentView addSubview:titleLabel]; - //[titleLabel release]; minimumCharacters = 1; maximumCharacters = 64; @@ -57,7 +55,7 @@ return self; } --(void) layoutSubviews { +- (void)layoutSubviews { [super layoutSubviews]; CGRect contentRect = self.contentView.bounds; @@ -79,35 +77,27 @@ textField.frame = CGRectMake(boundsX+offset+10, skew+10, 300, [UIFont labelFontSize] + 4); } --(void) setSelected:(BOOL)selected animated:(BOOL)animated { +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state } --(void) dealloc { - self.delegate = nil; - releaseAndNil(oldValue); - releaseAndNil(titleLabel); - releaseAndNil(textField); - [super dealloc]; -} - #pragma mark - #pragma mark textField delegate // limit the size of the field to 64 characters like in original frontend --(BOOL) textField:(UITextField *)aTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { +- (BOOL)textField:(UITextField *)aTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { return !([aTextField.text length] > self.maximumCharacters && [string length] > range.length); } // allow editing only if delegate is set and conformant to protocol, and if editableOnlyWhileEditing --(BOOL) textFieldShouldBeginEditing:(UITextField *)aTextField { +- (BOOL)textFieldShouldBeginEditing:(UITextField *)aTextField { return (delegate != nil) && [delegate respondsToSelector:@selector(saveTextFieldValue:withTag:)] && (respectEditing) ? [self findTable].editing : YES; } // the textfield is being modified, update the navigation controller --(void) textFieldDidBeginEditing:(UITextField *)aTextField{ +- (void)textFieldDidBeginEditing:(UITextField *)aTextField{ // don't interact with table below [self findTable].scrollEnabled = NO; @@ -118,30 +108,28 @@ target:self action:@selector(cancel:)]; [(UITableViewController *)delegate navigationItem].leftBarButtonItem = cancelButton; - [cancelButton release]; UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Save",@"") style:UIBarButtonItemStyleDone target:self action:@selector(save:)]; [(UITableViewController *)delegate navigationItem].rightBarButtonItem = saveButton; - [saveButton release]; } /* with this a field might remain in editing status even if the view moved; use method below instead that allows some more interaction // don't accept 0-length strings --(BOOL) textFieldShouldEndEditing:(UITextField *)aTextField { +- (BOOL)textFieldShouldEndEditing:(UITextField *)aTextField { return ([aTextField.text length] > 0); } */ --(BOOL) textFieldShouldReturn:(UITextField *)aTextField { +- (BOOL)textFieldShouldReturn:(UITextField *)aTextField { return ([aTextField.text length] >= self.minimumCharacters); } // the textfield has been modified, tell the delegate to do something --(void) textFieldDidEndEditing:(UITextField *)aTextField { +- (void)textFieldDidEndEditing:(UITextField *)aTextField { // this forces a save when user selects a new field if ([self.textField.text isEqualToString:self.oldValue] == NO) [self save:aTextField]; @@ -155,19 +143,19 @@ #pragma mark - #pragma mark instance methods // the user wants to show the keyboard --(void) replyKeyboard { +- (void)replyKeyboard { [self.textField becomeFirstResponder]; } // the user pressed cancel so hide keyboard --(void) cancel:(id) sender { +- (void)cancel:(id)sender { // reverts any changes and performs a fake save for removing the keyboard self.textField.text = self.oldValue; [self save:sender]; } // send the value to the delegate (called before textFieldDidEndEditing) --(void) save:(id) sender { +- (void)save:(id)sender { if (delegate == nil || [delegate respondsToSelector:@selector(saveTextFieldValue:withTag:)] == NO) return; @@ -181,7 +169,7 @@ } // when field is editable only when the tableview is editable, resign responder when exiting editing mode --(void) willTransitionToState:(UITableViewCellStateMask)state { +- (void)willTransitionToState:(UITableViewCellStateMask)state { if (respectEditing && state == UITableViewCellStateDefaultMask) [self save:nil]; diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/EngineProtocolNetwork.h --- a/project_files/HedgewarsMobile/Classes/EngineProtocolNetwork.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/EngineProtocolNetwork.h Sat Dec 30 01:22:11 2017 +0100 @@ -23,32 +23,32 @@ @protocol EngineProtocolDelegate --(void) gameEndedWithStatistics:(NSArray *)stats; +- (void)gameEndedWithStatistics:(NSArray *)stats; @end @interface EngineProtocolNetwork : NSObject { - id delegate; + id __weak delegate; NSOutputStream *stream; TCPsocket csd; NSInteger enginePort; } -@property (nonatomic,assign) id delegate; -@property (nonatomic,retain) NSOutputStream *stream; +@property (nonatomic, weak) id delegate; +@property (nonatomic, strong) NSOutputStream *stream; @property (assign) TCPsocket csd; @property (assign) NSInteger enginePort; --(id) init; --(id) initWithPort:(NSInteger) port; --(void) spawnThread:(NSString *)onSaveFile withOptions:(NSDictionary *)dictionary; --(void) engineProtocol:(id) object; +- (id) init; +- (id) initWithPort:(NSInteger)port; +- (void)spawnThread:(NSString *)onSaveFile withOptions:(NSDictionary *)dictionary; +- (void)engineProtocol:(id)object; -(int) sendToEngine:(NSString *)string; -(int) sendToEngineNoSave:(NSString *)string; --(void) provideTeamData:(NSString *)teamName forHogs:(NSInteger) numberOfPlayingHogs withHealth:(NSInteger) initialHealth ofColor:(NSNumber *)teamColor; --(void) provideAmmoData:(NSString *)ammostoreName forPlayingTeams:(NSInteger) numberOfTeams; --(NSInteger) provideScheme:(NSString *)schemeName; +- (void)provideTeamData:(NSString *)teamName forHogs:(NSInteger)numberOfPlayingHogs withHealth:(NSInteger)initialHealth ofColor:(NSNumber *)teamColor; +- (void)provideAmmoData:(NSString *)ammostoreName forPlayingTeams:(NSInteger)numberOfTeams; +- (NSInteger)provideScheme:(NSString *)schemeName; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/EngineProtocolNetwork.m --- a/project_files/HedgewarsMobile/Classes/EngineProtocolNetwork.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/EngineProtocolNetwork.m Sat Dec 30 01:22:11 2017 +0100 @@ -25,7 +25,7 @@ @implementation EngineProtocolNetwork @synthesize delegate, stream, csd, enginePort; --(id) initWithPort:(NSInteger) port { +- (id)initWithPort:(NSInteger)port { if ((self = [super init])) { self.delegate = nil; self.csd = NULL; @@ -35,19 +35,13 @@ return self; } --(id) init { +- (id)init { return [self initWithPort:[HWUtils randomPort]]; } --(void) dealloc { - self.delegate = nil; - releaseAndNil(stream); - [super dealloc]; -} - #pragma mark - #pragma mark Spawner functions --(void) spawnThread:(NSString *)onSaveFile withOptions:(NSDictionary *)dictionary { +- (void)spawnThread:(NSString *)onSaveFile withOptions:(NSDictionary *)dictionary { self.stream = (onSaveFile) ? [[NSOutputStream alloc] initToFileAtPath:onSaveFile append:YES] : nil; [self.stream open]; @@ -60,7 +54,7 @@ #pragma mark - #pragma mark Provider functions // unpacks team data from the selected team.plist to a sequence of engine commands --(void) provideTeamData:(NSString *)teamName forHogs:(NSInteger) numberOfPlayingHogs withHealth:(NSInteger) initialHealth ofColor:(NSNumber *)teamColor { +- (void)provideTeamData:(NSString *)teamName forHogs:(NSInteger)numberOfPlayingHogs withHealth:(NSInteger)initialHealth ofColor:(NSNumber *)teamColor { /* addteam <32charsMD5hash> addhh @@ -69,28 +63,22 @@ NSString *teamFile = [[NSString alloc] initWithFormat:@"%@/%@", TEAMS_DIRECTORY(), teamName]; NSDictionary *teamData = [[NSDictionary alloc] initWithContentsOfFile:teamFile]; - [teamFile release]; NSString *teamHashColorAndName = [[NSString alloc] initWithFormat:@"eaddteam %@ %@ %@", [teamData objectForKey:@"hash"], [teamColor stringValue], [teamName stringByDeletingPathExtension]]; [self sendToEngine: teamHashColorAndName]; - [teamHashColorAndName release]; NSString *grave = [[NSString alloc] initWithFormat:@"egrave %@", [teamData objectForKey:@"grave"]]; [self sendToEngine: grave]; - [grave release]; NSString *fort = [[NSString alloc] initWithFormat:@"efort %@", [teamData objectForKey:@"fort"]]; [self sendToEngine: fort]; - [fort release]; NSString *voicepack = [[NSString alloc] initWithFormat:@"evoicepack %@", [teamData objectForKey:@"voicepack"]]; [self sendToEngine: voicepack]; - [voicepack release]; NSString *flag = [[NSString alloc] initWithFormat:@"eflag %@", [teamData objectForKey:@"flag"]]; [self sendToEngine: flag]; - [flag release]; NSArray *hogs = [teamData objectForKey:@"hedgehogs"]; for (int i = 0; i < numberOfPlayingHogs; i++) { @@ -99,21 +87,16 @@ NSString *hogLevelHealthAndName = [[NSString alloc] initWithFormat:@"eaddhh %@ %ld %@", [hog objectForKey:@"level"], (long)initialHealth, [hog objectForKey:@"hogname"]]; [self sendToEngine: hogLevelHealthAndName]; - [hogLevelHealthAndName release]; NSString *hogHat = [[NSString alloc] initWithFormat:@"ehat %@", [hog objectForKey:@"hat"]]; [self sendToEngine: hogHat]; - [hogHat release]; } - - [teamData release]; } // unpacks ammostore data from the selected ammo.plist to a sequence of engine commands --(void) provideAmmoData:(NSString *)ammostoreName forPlayingTeams:(NSInteger) numberOfTeams { +- (void)provideAmmoData:(NSString *)ammostoreName forPlayingTeams:(NSInteger)numberOfTeams { NSString *weaponPath = [[NSString alloc] initWithFormat:@"%@/%@",WEAPONS_DIRECTORY(),ammostoreName]; NSDictionary *ammoData = [[NSDictionary alloc] initWithContentsOfFile:weaponPath]; - [weaponPath release]; // if we're loading an older version of ammos fill the engine message with 0s int diff = HW_getNumberOfWeapons() - [[ammoData objectForKey:@"ammostore_initialqt"] length]; @@ -123,34 +106,28 @@ NSString *ammloadt = [[NSString alloc] initWithFormat:@"eammloadt %@%@", [ammoData objectForKey:@"ammostore_initialqt"], update]; [self sendToEngine: ammloadt]; - [ammloadt release]; NSString *ammprob = [[NSString alloc] initWithFormat:@"eammprob %@%@", [ammoData objectForKey:@"ammostore_probability"], update]; [self sendToEngine: ammprob]; - [ammprob release]; NSString *ammdelay = [[NSString alloc] initWithFormat:@"eammdelay %@%@", [ammoData objectForKey:@"ammostore_delay"], update]; [self sendToEngine: ammdelay]; - [ammdelay release]; NSString *ammreinf = [[NSString alloc] initWithFormat:@"eammreinf %@%@", [ammoData objectForKey:@"ammostore_crate"], update]; [self sendToEngine: ammreinf]; - [ammreinf release]; // send this for each team so it applies the same ammostore to all teams NSString *ammstore = [[NSString alloc] initWithString:@"eammstore"]; - for (int i = 0; i < numberOfTeams; i++) + for (int i = 0; i < numberOfTeams; i++) { [self sendToEngine: ammstore]; - [ammstore release]; - - [ammoData release]; + } } // unpacks scheme data from the selected scheme.plist to a sequence of engine commands --(NSInteger) provideScheme:(NSString *)schemeName { +- (NSInteger)provideScheme:(NSString *)schemeName { NSString *schemePath = [[NSString alloc] initWithFormat:@"%@/%@",SCHEMES_DIRECTORY(),schemeName]; NSDictionary *schemeDictionary = [[NSDictionary alloc] initWithContentsOfFile:schemePath]; - [schemePath release]; + NSArray *basicArray = [schemeDictionary objectForKey:@"basic"]; NSArray *gamemodArray = [schemeDictionary objectForKey:@"gamemod"]; int result = 0; @@ -164,7 +141,6 @@ } NSString *flags = [[NSString alloc] initWithFormat:@"e$gmflags %d",result]; [self sendToEngine:flags]; - [flags release]; // basic game flags result = [[basicArray objectAtIndex:0] intValue]; @@ -180,17 +156,14 @@ value = value * 1000; NSString *strToSend = [[NSString alloc] initWithFormat:@"%@ %d",command,value]; [self sendToEngine:strToSend]; - [strToSend release]; } - [basic release]; - [schemeDictionary release]; return result; } #pragma mark - #pragma mark Network relevant code --(void) dumpRawData:(const char *)buffer ofSize:(uint8_t) length { +- (void)dumpRawData:(const char *)buffer ofSize:(uint8_t) length { [self.stream write:&length maxLength:1]; [self.stream write:(const uint8_t *)buffer maxLength:length]; } @@ -213,7 +186,7 @@ } // this is launched as thread and handles all IPC with engine --(void) engineProtocol:(id) object { +- (void)engineProtocol:(id)object { @autoreleasepool { NSDictionary *gameConfig = (NSDictionary *)object; @@ -259,7 +232,7 @@ break; switch (buffer[0]) { - case 'C': + case 'C': { DLog(@"Sending game config...\n%@", gameConfig); /*if (isNetGame == YES) @@ -310,15 +283,18 @@ ofColor:[teamData objectForKey:@"color"]]; } break; - case '?': + } + case '?': { DLog(@"Ping? Pong!"); [self sendToEngine:@"!"]; break; - case 'E': + } + case 'E': { DLog(@"ERROR - last console line: [%s]", &buffer[1]); clientQuit = YES; break; - case 'e': + } + case 'e': { [self dumpRawData:buffer ofSize:msgSize]; sscanf((char *)buffer, "%*s %d", &eProto); @@ -333,21 +309,22 @@ clientQuit = YES; } break; - case 'i': + } + case 'i': { if (statsArray == nil) { statsArray = [[NSMutableArray alloc] initWithCapacity:10 - 2]; NSMutableArray *ranking = [[NSMutableArray alloc] initWithCapacity:4]; [statsArray insertObject:ranking atIndex:0]; - [ranking release]; } NSString *tempStr = [NSString stringWithUTF8String:&buffer[2]]; NSArray *info = [tempStr componentsSeparatedByString:@" "]; NSString *arg = [info objectAtIndex:0]; int index = [arg lengthOfBytesUsingEncoding:NSUTF8StringEncoding] + 3; switch (buffer[1]) { - case 'r': // winning team + case 'r': { // winning team [statsArray insertObject:[NSString stringWithUTF8String:&buffer[2]] atIndex:1]; break; + } case 'D': // best shot { NSString *hogName = [NSString stringWithUTF8String:&buffer[index]]; @@ -394,19 +371,21 @@ break; } break; - case 'q': + } + case 'q': { // game ended and match finished, statsArray is full of delicious statistics if (self.delegate != nil && [self.delegate respondsToSelector:@selector(gameEndedWithStatistics:)]) [self.delegate gameEndedWithStatistics:statsArray]; - [statsArray release]; [HWUtils setGameStatus:gsEnded]; // closing connection here would trigger a "IPC connection lost" error, so we have to wait until recv fails break; - case 'Q': + } + case 'Q': { // game exited but not completed, skip this message in the savefile [HWUtils setGameStatus:gsInterrupted]; // same here, don't set clientQuit to YES break; + } default: [self dumpRawData:buffer ofSize:msgSize]; break; @@ -415,7 +394,6 @@ DLog(@"Engine exited, ending thread"); [self.stream close]; - [self.stream release]; // Close the client socket [HWUtils freePort:self.enginePort]; diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/ExtraCategories.h --- a/project_files/HedgewarsMobile/Classes/ExtraCategories.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/ExtraCategories.h Sat Dec 30 01:22:11 2017 +0100 @@ -30,7 +30,7 @@ @interface UITableView (backgroundColor) --(void) setBackgroundColorForAnyTable:(UIColor *)color; +- (void)setBackgroundColorForAnyTable:(UIColor *)color; @end @@ -48,7 +48,7 @@ @interface UIButton (quickStyle) --(id) initWithFrame:(CGRect) frame andTitle:(NSString *)title; +- (id)initWithFrame:(CGRect)frame andTitle:(NSString *)title; - (void)applyBlackQuickStyle; - (void)applyDarkBlueQuickStyle; @@ -58,9 +58,9 @@ @interface UILabel (quickStyle) --(id) initWithFrame:(CGRect)frame andTitle:(NSString *)title; --(id) initWithFrame:(CGRect)frame andTitle:(NSString *)title withBorderWidth:(CGFloat) borderWidth; --(id) initWithFrame:(CGRect)frame andTitle:(NSString *)title withBorderWidth:(CGFloat) borderWidth +- (id)initWithFrame:(CGRect)frame andTitle:(NSString *)title; +- (id)initWithFrame:(CGRect)frame andTitle:(NSString *)title withBorderWidth:(CGFloat)borderWidth; +- (id)initWithFrame:(CGRect)frame andTitle:(NSString *)title withBorderWidth:(CGFloat)borderWidth withBorderColor:(UIColor *)borderColor withBackgroundColor:(UIColor *)backColor; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/ExtraCategories.m --- a/project_files/HedgewarsMobile/Classes/ExtraCategories.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/ExtraCategories.m Sat Dec 30 01:22:11 2017 +0100 @@ -47,12 +47,11 @@ #pragma mark - @implementation UITableView (backgroundColor) --(void) setBackgroundColorForAnyTable:(UIColor *) color { +- (void)setBackgroundColorForAnyTable:(UIColor *) color { if ([self respondsToSelector:@selector(backgroundView)]) { UIView *backView = [[UIView alloc] initWithFrame:self.frame]; backView.backgroundColor = color; self.backgroundView = backView; - [backView release]; self.backgroundColor = [UIColor clearColor]; } else self.backgroundColor = color; @@ -97,8 +96,8 @@ #pragma mark - @implementation UIButton (quickStyle) --(id) initWithFrame:(CGRect) frame andTitle:(NSString *)title { - [self initWithFrame:frame]; +- (id)initWithFrame:(CGRect)frame andTitle:(NSString *)title { + if (!(self = [self initWithFrame:frame])) return nil; [self setTitle:title forState:UIControlStateNormal]; [self applyBlackQuickStyle]; @@ -137,7 +136,7 @@ #pragma mark - @implementation UILabel (quickStyle) --(id) initWithFrame:(CGRect)frame andTitle:(NSString *)title { +- (id)initWithFrame:(CGRect)frame andTitle:(NSString *)title { return [self initWithFrame:frame andTitle:title withBorderWidth:1.5f @@ -145,7 +144,7 @@ withBackgroundColor:[UIColor darkBlueColor]]; } --(id) initWithFrame:(CGRect)frame andTitle:(NSString *)title withBorderWidth:(CGFloat) borderWidth { +- (id)initWithFrame:(CGRect)frame andTitle:(NSString *)title withBorderWidth:(CGFloat)borderWidth { return [self initWithFrame:frame andTitle:title withBorderWidth:borderWidth @@ -153,7 +152,7 @@ withBackgroundColor:[UIColor darkBlueColorTransparent]]; } --(id) initWithFrame:(CGRect)frame andTitle:(NSString *)title withBorderWidth:(CGFloat) borderWidth +- (id)initWithFrame:(CGRect)frame andTitle:(NSString *)title withBorderWidth:(CGFloat)borderWidth withBorderColor:(UIColor *)borderColor withBackgroundColor:(UIColor *)backColor { UILabel *theLabel = [self initWithFrame:frame]; theLabel.backgroundColor = backColor; diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/FlagsViewController.h --- a/project_files/HedgewarsMobile/Classes/FlagsViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/FlagsViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -28,9 +28,9 @@ NSIndexPath *lastIndexPath; } -@property (nonatomic,retain) NSDictionary * teamDictionary; -@property (nonatomic,retain) NSArray *flagArray; -@property (nonatomic,retain) NSArray *communityArray; -@property (nonatomic,retain) NSIndexPath *lastIndexPath; +@property (nonatomic, strong) NSDictionary * teamDictionary; +@property (nonatomic, strong) NSArray *flagArray; +@property (nonatomic, strong) NSArray *communityArray; +@property (nonatomic, strong) NSIndexPath *lastIndexPath; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/FlagsViewController.m --- a/project_files/HedgewarsMobile/Classes/FlagsViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/FlagsViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -24,13 +24,13 @@ @implementation FlagsViewController @synthesize teamDictionary, flagArray, communityArray, lastIndexPath; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; NSMutableArray *array_na = [[NSMutableArray alloc] init]; @@ -45,14 +45,12 @@ } self.flagArray = array_na; - [array_na release]; self.communityArray = array_cm; - [array_cm release]; self.title = NSLocalizedString(@"Set team flag",@""); } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // reloadData needed because team might change [self.tableView reloadData]; @@ -62,11 +60,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 2; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (section == 0) return [self.flagArray count]; else @@ -80,7 +78,7 @@ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } NSString *flagName = nil; @@ -94,9 +92,7 @@ } NSString *flagFile = [[NSString alloc] initWithFormat:@"%@/%@", FLAGS_DIRECTORY(), flagName]; UIImage *flagSprite = [[UIImage alloc] initWithContentsOfFile:flagFile]; - [flagFile release]; cell.imageView.image = flagSprite; - [flagSprite release]; cell.imageView.layer.borderWidth = 1; cell.imageView.layer.borderColor = [[UIColor blackColor] CGColor]; @@ -130,7 +126,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger newRow = [indexPath row]; NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; NSInteger newSection = [indexPath section]; @@ -163,29 +159,12 @@ #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { self.lastIndexPath = nil; MSG_MEMCLEAN(); [super didReceiveMemoryWarning]; } --(void) viewDidUnload { - self.teamDictionary = nil; - self.lastIndexPath = nil; - self.flagArray = nil; - self.communityArray = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc { - releaseAndNil(teamDictionary); - releaseAndNil(lastIndexPath); - releaseAndNil(flagArray); - releaseAndNil(communityArray); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/FortsViewController.h --- a/project_files/HedgewarsMobile/Classes/FortsViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/FortsViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -27,8 +27,8 @@ NSIndexPath *lastIndexPath; } -@property (nonatomic,retain) NSDictionary * teamDictionary; -@property (nonatomic,retain) NSArray *fortArray; -@property (nonatomic,retain) NSIndexPath *lastIndexPath; +@property (nonatomic, strong) NSDictionary * teamDictionary; +@property (nonatomic, strong) NSArray *fortArray; +@property (nonatomic, strong) NSIndexPath *lastIndexPath; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/FortsViewController.m --- a/project_files/HedgewarsMobile/Classes/FortsViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/FortsViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -26,14 +26,14 @@ @synthesize teamDictionary, fortArray, lastIndexPath; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; NSArray *directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:FORTS_DIRECTORY() error:NULL]; @@ -49,7 +49,6 @@ } } self.fortArray = filteredContents; - [filteredContents release]; // statically set row height instead of using delegate method for performance reasons self.tableView.rowHeight = 128; @@ -58,7 +57,7 @@ } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.tableView reloadData]; [self.tableView setContentOffset:CGPointMake(0,0) animated:NO]; @@ -67,11 +66,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.fortArray count]; } @@ -81,17 +80,15 @@ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle - reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle + reuseIdentifier:CellIdentifier]; NSString *fortName = [fortArray objectAtIndex:[indexPath row]]; cell.textLabel.text = fortName; NSString *fortFile = [[NSString alloc] initWithFormat:@"%@/%@-preview.png", FORTS_DIRECTORY(), fortName]; UIImage *fortSprite = [[UIImage alloc] initWithContentsOfFile:fortFile]; - [fortFile release]; cell.imageView.image = fortSprite; - [fortSprite release]; //cell.detailTextLabel.text = @"Insert funny description here"; if ([cell.textLabel.text isEqualToString:[self.teamDictionary objectForKey:@"fort"]]) { @@ -107,7 +104,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger newRow = [indexPath row]; NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; @@ -132,28 +129,12 @@ #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { self.lastIndexPath = nil; MSG_MEMCLEAN(); [super didReceiveMemoryWarning]; } --(void) viewDidUnload { - self.teamDictionary = nil; - self.lastIndexPath = nil; - self.fortArray = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - - --(void) dealloc { - releaseAndNil(teamDictionary); - releaseAndNil(lastIndexPath); - releaseAndNil(fortArray); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/GameConfigViewController.h --- a/project_files/HedgewarsMobile/Classes/GameConfigViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameConfigViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -45,9 +45,9 @@ @property (nonatomic,retain) IBOutlet MapConfigViewController *mapConfigViewController; @property (nonatomic,retain) HelpPageLobbyViewController *helpPage; --(IBAction) buttonPressed:(id) sender; --(IBAction) segmentPressed:(id) sender; --(void) startGame:(UIButton *)button; --(BOOL) isEverythingSet; +- (IBAction)buttonPressed:(id)sender; +- (IBAction)segmentPressed:(id)sender; +- (void)startGame:(UIButton *)button; +- (BOOL)isEverythingSet; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/GameConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/GameConfigViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameConfigViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -35,13 +35,13 @@ @synthesize imgContainer, titleImage, sliderBackground, helpPage, mapConfigViewController, teamConfigViewController, schemeWeaponConfigViewController; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - Buttons --(IBAction) buttonPressed:(id) sender { +- (IBAction)buttonPressed:(id)sender { UIButton *theButton = (UIButton *)sender; switch (theButton.tag) { @@ -53,7 +53,6 @@ cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"") otherButtonTitles:nil]; [alert show]; - [alert release]; } else { [[AudioManagerController mainManager] playBackSound]; [[self presentingViewController] dismissViewControllerAnimated:YES completion:nil]; @@ -68,7 +67,7 @@ [self startGame:theButton]; break; - case 2: + case 2: { [[AudioManagerController mainManager] playClickSound]; if (self.helpPage == nil) self.helpPage = [[HelpPageLobbyViewController alloc] initWithNibName:@"HelpPageLobbyViewController-iPad" bundle:nil]; @@ -79,6 +78,7 @@ self.helpPage.view.alpha = 1; }]; break; + } default: DLog(@"Nope"); break; @@ -96,7 +96,7 @@ } } --(IBAction) segmentPressed:(id) sender { +- (IBAction)segmentPressed:(id)sender { UISegmentedControl *theSegment = (UISegmentedControl *)sender; @@ -138,7 +138,7 @@ #pragma mark - --(BOOL) isEverythingSet { +- (BOOL)isEverythingSet { // don't start playing if the preview is in progress if ([self.mapConfigViewController busy]) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Wait for the Preview",@"") @@ -147,7 +147,6 @@ cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"") otherButtonTitles:nil]; [alert show]; - [alert release]; return NO; } @@ -159,7 +158,6 @@ cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"") otherButtonTitles:nil]; [alert show]; - [alert release]; return NO; } @@ -174,7 +172,6 @@ cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"") otherButtonTitles:nil]; [alert show]; - [alert release]; return NO; } @@ -186,7 +183,6 @@ cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"") otherButtonTitles:nil]; [alert show]; - [alert release]; return NO; } @@ -198,14 +194,12 @@ cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"") otherButtonTitles:nil]; [alert show]; - [alert release]; return NO; } // play if the gameflags are set correctly (divideteam works only with 2 teams) NSString *schemePath = [[NSString alloc] initWithFormat:@"%@/%@",SCHEMES_DIRECTORY(),self.schemeWeaponConfigViewController.selectedScheme]; NSArray *gameFlags = [[NSDictionary dictionaryWithContentsOfFile:schemePath] objectForKey:@"gamemod"]; - [schemePath release]; if ([[gameFlags objectAtIndex:2] boolValue] && [self.teamConfigViewController.listOfSelectedTeams count] != 2) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Scheme mismatch",@"") message:NSLocalizedString(@"The scheme you selected allows only for two teams",@"") @@ -213,14 +207,13 @@ cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"") otherButtonTitles:nil]; [alert show]; - [alert release]; return NO; } return YES; } --(void) startGame:(UIButton *)button { +- (void)startGame:(UIButton *)button { button.enabled = YES; NSString *script = self.mapConfigViewController.missionCommand; @@ -243,17 +236,14 @@ [GameInterfaceBridge registerCallingController:self]; [GameInterfaceBridge startLocalGame:gameDictionary]; - [gameDictionary release]; } --(void) loadNiceHogs +- (void)loadNiceHogs { @autoreleasepool { - NSString *filePath = [[NSString alloc] initWithFormat:@"%@/Hedgehog/Idle.png",GRAPHICS_DIRECTORY()]; UIImage *hogSprite = [[UIImage alloc] initWithContentsOfFile:filePath]; - [filePath release]; NSArray *hatArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:HATS_DIRECTORY() error:NULL]; NSUInteger numberOfHats = [hatArray count]; @@ -278,13 +268,10 @@ [animation addObject:hogWithHat]; } } - [hatSprite release]; - [hatFile release]; UIImageView *hog = [[UIImageView alloc] initWithImage:[animation firstObject]]; hog.animationImages = animation; hog.animationDuration = 3; - [animation release]; int x = 20*i+arc4random_uniform(128); while (x > 320 - 32) @@ -293,9 +280,7 @@ hog.frame = CGRectMake(x, 25, hog.frame.size.width, hog.frame.size.height); [self.imgContainer addSubview:hog]; [hog startAnimating]; - [hog release]; } - [hogSprite release]; dispatch_async(dispatch_get_main_queue(), ^{ @@ -326,7 +311,7 @@ self.imgContainer = nil; } --(void) viewDidLoad +- (void)viewDidLoad { [super viewDidLoad]; @@ -342,7 +327,6 @@ andTitle:nil withBorderWidth:2.0f]; self.sliderBackground = backLabel; - [backLabel release]; [self.view addSubview:self.sliderBackground]; // the label for max hogs @@ -354,7 +338,6 @@ maxLabel.textAlignment = NSTextAlignmentCenter; [self.view addSubview:maxLabel]; self.mapConfigViewController.maxLabel = maxLabel; - [maxLabel release]; } else { @@ -370,7 +353,7 @@ [self.view bringSubviewToFront:self.mapConfigViewController.slider]; } --(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval) duration { +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval) duration { if (IS_IPAD() == NO) return; @@ -406,7 +389,7 @@ } } --(void) viewWillAppear:(BOOL)animated +- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; @@ -436,7 +419,7 @@ } } --(void) didReceiveMemoryWarning +- (void)didReceiveMemoryWarning { [self clearImgContainer]; @@ -457,30 +440,4 @@ [super didReceiveMemoryWarning]; } --(void) viewDidUnload { - self.imgContainer = nil; - self.titleImage = nil; - self.sliderBackground = nil; - self.schemeWeaponConfigViewController = nil; - self.teamConfigViewController = nil; - self.mapConfigViewController = nil; - self.helpPage = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc { - releaseAndNil(_tabsSegmentedControl); - releaseAndNil(_backButton); - releaseAndNil(_startButton); - releaseAndNil(imgContainer); - releaseAndNil(titleImage); - releaseAndNil(sliderBackground); - releaseAndNil(schemeWeaponConfigViewController); - releaseAndNil(teamConfigViewController); - releaseAndNil(mapConfigViewController); - releaseAndNil(helpPage); - [super dealloc]; -} - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/GameInterfaceBridge.h --- a/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.h Sat Dec 30 01:22:11 2017 +0100 @@ -27,16 +27,16 @@ NSInteger port; } -@property (nonatomic,retain) UIView *blackView; -@property (nonatomic,retain) NSString *savePath; +@property (nonatomic, strong) UIView *blackView; +@property (nonatomic, strong) NSString *savePath; @property (assign) NSInteger port; -+(void) startLocalGame:(NSDictionary *)withOptions; -+(void) startSaveGame:(NSString *)atPath; -+(void) startMissionGame:(NSString *)withScript; -+(void) startCampaignMissionGameWithScript:(NSString *)missionScriptName forCampaign:(NSString *)campaignName; -+(void) startSimpleGame; ++ (void)startLocalGame:(NSDictionary *)withOptions; ++ (void)startSaveGame:(NSString *)atPath; ++ (void)startMissionGame:(NSString *)withScript; ++ (void)startCampaignMissionGameWithScript:(NSString *)missionScriptName forCampaign:(NSString *)campaignName; ++ (void)startSimpleGame; -+(void) registerCallingController:(UIViewController *)controller; ++ (void)registerCallingController:(UIViewController *)controller; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m --- a/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m Sat Dec 30 01:22:11 2017 +0100 @@ -30,15 +30,13 @@ #pragma mark - #pragma mark Instance methods for engine interaction // prepares the controllers for hosting a game --(void) earlyEngineLaunch:(NSDictionary *)optionsOrNil { - [self retain]; +- (void)earlyEngineLaunch:(NSDictionary *)optionsOrNil { [[AudioManagerController mainManager] fadeOutBackgroundMusic]; EngineProtocolNetwork *engineProtocol = [[EngineProtocolNetwork alloc] init]; self.port = engineProtocol.enginePort; engineProtocol.delegate = self; [engineProtocol spawnThread:self.savePath withOptions:optionsOrNil]; - [engineProtocol release]; // add a black view hiding the background UIWindow *thisWindow = [[HedgewarsAppDelegate sharedAppDelegate] uiwindow]; @@ -52,7 +50,6 @@ self.blackView.alpha = 1; [UIView commitAnimations]; [thisWindow addSubview:self.blackView]; - [self.blackView release]; // keep the point of return for games that completed loading NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; @@ -65,7 +62,7 @@ } // cleans up everything --(void) lateEngineLaunch { +- (void)lateEngineLaunch { // notify views below that they are getting the spotlight again [[[HedgewarsAppDelegate sharedAppDelegate] uiwindow] makeKeyAndVisible]; [callingController viewWillAppear:YES]; @@ -91,11 +88,10 @@ [[AudioManagerController mainManager] fadeInBackgroundMusic]; [HWUtils setGameStatus:gsNone]; [HWUtils setGameType:gtNone]; - [self release]; } // main routine for calling the actual game engine --(void) engineLaunch { +- (void)engineLaunch { CGFloat width, height; CGFloat screenScale = [[UIScreen mainScreen] safeScale]; NSString *ipcString = [[NSString alloc] initWithFormat:@"%d",self.port]; @@ -141,11 +137,6 @@ @"--prefix", resourcePath, @"--user-prefix", documentsDirectory, nil]; - [verticalSize release]; - [horizontalSize release]; - [resourcePath release]; - [localeString release]; - [ipcString release]; NSString *username = [settings objectForKey:@"username"]; if ([username length] > 0) { @@ -175,7 +166,6 @@ const char **argv = (const char **)malloc(sizeof(const char*)*argc); for (int i = 0; i < argc; i++) argv[i] = strdup([[gameParameters objectAtIndex:i] UTF8String]); - [gameParameters release]; // this is the pascal function that starts the game RunEngine(argc, argv); @@ -189,88 +179,72 @@ [self lateEngineLaunch]; } --(void) dealloc { - releaseAndNil(blackView); - releaseAndNil(savePath); - [super dealloc]; -} #pragma mark - #pragma mark EngineProtocolDelegate methods --(void) gameEndedWithStatistics:(NSArray *)stats { +- (void)gameEndedWithStatistics:(NSArray *)stats { if (stats != nil) { StatsPageViewController *statsPage = [[StatsPageViewController alloc] init]; statsPage.statsArray = stats; statsPage.modalTransitionStyle = UIModalTransitionStyleCoverVertical; [callingController presentViewController:statsPage animated:YES completion:nil]; - [statsPage release]; } } #pragma mark - #pragma mark Class methods for setting up the engine from outsite -+(void) registerCallingController:(UIViewController *)controller { ++ (void)registerCallingController:(UIViewController *)controller { callingController = controller; } -+(void) startGame:(TGameType) type atPath:(NSString *)path withOptions:(NSDictionary *)config { ++ (void)startGame:(TGameType)type atPath:(NSString *)path withOptions:(NSDictionary *)config { [HWUtils setGameType:type]; id bridge = [[self alloc] init]; [bridge setSavePath:path]; [bridge earlyEngineLaunch:config]; - [bridge release]; } -+(void) startLocalGame:(NSDictionary *)withOptions { ++ (void)startLocalGame:(NSDictionary *)withOptions { NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; [outputFormatter setDateFormat:@"yyyy-MM-dd '@' HH.mm"]; NSString *savePath = [[NSString alloc] initWithFormat:@"%@%@.hws",SAVES_DIRECTORY(),[outputFormatter stringFromDate:[NSDate date]]]; - [outputFormatter release]; // in the rare case in which a savefile with the same name exists the older one must be removed (otherwise it gets corrupted) if ([[NSFileManager defaultManager] fileExistsAtPath:savePath]) [[NSFileManager defaultManager] removeItemAtPath:savePath error:nil]; [self startGame:gtLocal atPath:savePath withOptions:withOptions]; - [savePath release]; } -+(void) startSaveGame:(NSString *)atPath { ++ (void)startSaveGame:(NSString *)atPath { [self startGame:gtSave atPath:atPath withOptions:nil]; } -+(void) startMissionGame:(NSString *)withScript { ++ (void)startMissionGame:(NSString *)withScript { NSString *seedCmd = [self seedCommand]; NSString *missionPath = [[NSString alloc] initWithFormat:@"escript Missions/Training/%@.lua",withScript]; NSDictionary *missionDict = [[NSDictionary alloc] initWithObjectsAndKeys:missionPath, @"mission_command", seedCmd, @"seed_command", nil]; - [missionPath release]; - [seedCmd release]; [self startGame:gtMission atPath:nil withOptions:missionDict]; - [missionDict release]; } -+(NSString *) seedCommand { ++ (NSString *)seedCommand { // generate a seed NSString *seed = [HWUtils seed]; NSString *seedCmd = [[NSString alloc] initWithFormat:@"eseed {%@}", seed]; - [seed release]; return seedCmd; } -+(void) startCampaignMissionGameWithScript:(NSString *)missionScriptName forCampaign:(NSString *)campaignName { ++ (void)startCampaignMissionGameWithScript:(NSString *)missionScriptName forCampaign:(NSString *)campaignName { NSString *seedCmd = [self seedCommand]; NSString *campaignMissionPath = [[NSString alloc] initWithFormat:@"escript Missions/Campaign/%@/%@", campaignName, missionScriptName]; NSDictionary *campaignMissionDict = [[NSDictionary alloc] initWithObjectsAndKeys:campaignMissionPath, @"mission_command", seedCmd, @"seed_command", nil]; - [campaignMissionPath release]; - [seedCmd release]; [self startGame:gtCampaign atPath:nil withOptions:campaignMissionDict]; - [campaignMissionDict release]; } -+(void) startSimpleGame { ++ (void)startSimpleGame { NSString *seedCmd = [self seedCommand]; // pick a random static map @@ -278,9 +252,7 @@ NSString *mapName = [listOfMaps objectAtIndex:arc4random_uniform((int)[listOfMaps count])]; NSString *fileCfg = [[NSString alloc] initWithFormat:@"%@/%@/map.cfg",MAPS_DIRECTORY(),mapName]; NSString *contents = [[NSString alloc] initWithContentsOfFile:fileCfg encoding:NSUTF8StringEncoding error:NULL]; - [fileCfg release]; NSArray *split = [contents componentsSeparatedByString:@"\n"]; - [contents release]; NSString *themeCommand = [[NSString alloc] initWithFormat:@"etheme %@", [split objectAtIndex:0]]; NSString *staticMapCommand = [[NSString alloc] initWithFormat:@"emap %@", mapName]; @@ -301,8 +273,6 @@ [NSNumber numberWithUnsignedInt:secondColor],@"color", @"Robots.plist",@"team",nil]; NSArray *listOfTeams = [[NSArray alloc] initWithObjects:firstTeam,secondTeam,nil]; - [firstTeam release]; - [secondTeam release]; // create the configuration NSDictionary *gameDictionary = [[NSDictionary alloc] initWithObjectsAndKeys: @@ -317,14 +287,9 @@ @"Default.plist",@"weapon", @"",@"mission_command", nil]; - [listOfTeams release]; - [staticMapCommand release]; - [themeCommand release]; - [seedCmd release]; // launch game [GameInterfaceBridge startLocalGame:gameDictionary]; - [gameDictionary release]; } @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/GameLogViewController.m --- a/project_files/HedgewarsMobile/Classes/GameLogViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameLogViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -41,14 +41,12 @@ UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStylePlain target:self action:@selector(dismissAction)]; self.navigationItem.rightBarButtonItem = closeButton; - [closeButton release]; #ifdef DEBUG if ([self allowSendLogByEmail]) { UIBarButtonItem *sendButton = [[UIBarButtonItem alloc] initWithTitle:@"Send" style:UIBarButtonItemStylePlain target:self action:@selector(sendLogByEmailAction)]; self.navigationItem.leftBarButtonItem = sendButton; - [sendButton release]; } #endif @@ -61,11 +59,9 @@ UITextView *logView = [[UITextView alloc] initWithFrame:self.view.frame]; [logView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)]; logView.text = debugStr; - [debugStr release]; logView.editable = NO; [self.view addSubview:logView]; - [logView release]; } #pragma mark - Parameters @@ -95,7 +91,6 @@ [picker setMessageBody:emailBody isHTML:NO]; [self presentViewController:picker animated:YES completion:nil]; - [picker release]; } #endif diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m --- a/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -23,23 +23,23 @@ @implementation GeneralSettingsViewController --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View Lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { self.navigationItem.title = NSLocalizedString(@"Edit game options", nil); [super viewDidLoad]; } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [self.tableView setContentOffset:CGPointMake(0,0) animated:NO]; [super viewWillAppear:animated]; } --(void) viewWillDisappear:(BOOL)animated { +- (void)viewWillDisappear:(BOOL)animated { NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults synchronize]; if ([[userDefaults objectForKey:@"music"] boolValue] == NO) @@ -49,7 +49,7 @@ } #pragma mark - --(void) switchValueChanged:(id) sender { +- (void)switchValueChanged:(id)sender { UISwitch *theSwitch = (UISwitch *)sender; NSUserDefaults *settings = [NSUserDefaults standardUserDefaults]; @@ -76,7 +76,7 @@ } } --(void) saveTextFieldValue:(NSString *)textString withTag:(NSInteger) tagValue { +- (void)saveTextFieldValue:(NSString *)textString withTag:(NSInteger)tagValue { NSUserDefaults *settings = [NSUserDefaults standardUserDefaults]; if (tagValue == 40) @@ -87,11 +87,11 @@ #pragma mark - #pragma mark TableView Methods --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 3; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger )section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger )section { switch (section) { case 0: // user and pass return 1; // set 2 here to show the password field @@ -143,7 +143,7 @@ case 0: editableCell = (EditableCellView *)[aTableView dequeueReusableCellWithIdentifier:cellIdentifier0]; if (nil == editableCell) { - editableCell = [[[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier0] autorelease]; + editableCell = [[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier0]; editableCell.minimumCharacters = 0; editableCell.delegate = self; editableCell.textField.font = [UIFont systemFontOfSize:[UIFont systemFontSize]]; @@ -170,11 +170,10 @@ case 1: cell = [aTableView dequeueReusableCellWithIdentifier:cellIdentifier1]; if (nil == cell) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier1] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier1]; UISwitch *theSwitch = [[UISwitch alloc] init]; [theSwitch addTarget:self action:@selector(switchValueChanged:) forControlEvents:UIControlEventValueChanged]; cell.accessoryView = theSwitch; - [theSwitch release]; } switchContent = (UISwitch *)cell.accessoryView; @@ -191,11 +190,10 @@ case 2: cell = [aTableView dequeueReusableCellWithIdentifier:cellIdentifier2]; if (nil == cell) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier2] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier2]; UISwitch *theSwitch = [[UISwitch alloc] init]; [theSwitch addTarget:self action:@selector(switchValueChanged:) forControlEvents:UIControlEventValueChanged]; cell.accessoryView = theSwitch; - [theSwitch release]; } switchContent = (UISwitch *)cell.accessoryView; @@ -231,7 +229,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; if (0 == [indexPath section]) { EditableCellView *cell = (EditableCellView *)[aTableView cellForRowAtIndexPath:indexPath]; @@ -242,16 +240,9 @@ #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } --(void) viewDidUnload { - [super viewDidUnload]; -} - --(void) dealloc { - [super dealloc]; -} - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/GravesViewController.h --- a/project_files/HedgewarsMobile/Classes/GravesViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/GravesViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -27,8 +27,8 @@ NSIndexPath *lastIndexPath; } -@property (nonatomic,retain) NSMutableDictionary *teamDictionary; -@property (nonatomic,retain) NSArray *graveArray; -@property (nonatomic,retain) NSIndexPath *lastIndexPath; +@property (nonatomic, strong) NSMutableDictionary *teamDictionary; +@property (nonatomic, strong) NSArray *graveArray; +@property (nonatomic, strong) NSIndexPath *lastIndexPath; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/GravesViewController.m --- a/project_files/HedgewarsMobile/Classes/GravesViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/GravesViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -23,13 +23,13 @@ @implementation GravesViewController @synthesize teamDictionary, graveArray, lastIndexPath; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; // load all the grave names and store them into graveArray @@ -38,7 +38,7 @@ self.title = NSLocalizedString(@"Choose hedgehog graves",@""); } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.tableView reloadData]; // this moves the tableview to the top @@ -48,11 +48,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.graveArray count]; } @@ -62,7 +62,7 @@ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; NSString *grave = [self.graveArray objectAtIndex:[indexPath row]]; cell.textLabel.text = [grave stringByDeletingPathExtension]; @@ -77,9 +77,7 @@ NSString *graveFilePath = [[NSString alloc] initWithFormat:@"%@/%@",GRAVES_DIRECTORY(),grave]; // because we also have multi frame graves, let's take the first one only UIImage *graveSprite = [[UIImage alloc] initWithContentsOfFile:graveFilePath andCutAt:CGRectMake(0, 0, 32, 32)]; - [graveFilePath release]; cell.imageView.image = graveSprite; - [graveSprite release]; return cell; } @@ -87,7 +85,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger newRow = [indexPath row]; NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; @@ -111,27 +109,12 @@ #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { self.lastIndexPath = nil; MSG_MEMCLEAN(); [super didReceiveMemoryWarning]; } --(void) viewDidUnload { - self.lastIndexPath = nil; - self.teamDictionary = nil; - self.graveArray = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc { - releaseAndNil(graveArray); - releaseAndNil(teamDictionary); - releaseAndNil(lastIndexPath); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/HWUtils.h --- a/project_files/HedgewarsMobile/Classes/HWUtils.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/HWUtils.h Sat Dec 30 01:22:11 2017 +0100 @@ -27,23 +27,23 @@ } -+(TGameType) gameType; -+(void) setGameType:(TGameType) type; -+(TGameStatus) gameStatus; -+(void) setGameStatus:(TGameStatus) status; -+(BOOL) isGameLaunched; -+(BOOL) isGameRunning; ++ (TGameType)gameType; ++ (void)setGameType:(TGameType)type; ++ (TGameStatus)gameStatus; ++ (void)setGameStatus:(TGameStatus)status; ++ (BOOL)isGameLaunched; ++ (BOOL)isGameRunning; -+(NSString *)modelType; -+(NSArray *)teamColors; -+(void) releaseCache; ++ (NSString *)modelType; ++ (NSArray *)teamColors; ++ (void)releaseCache; -+(NSInteger) randomPort; -+(void) freePort:(NSInteger) port; -+(BOOL) isNetworkReachable; -+(NSString *) languageID; -//+(UIView *)mainSDLViewInstance; -+(NSString *) seed; ++ (NSInteger)randomPort; ++ (void)freePort:(NSInteger)port; ++ (BOOL)isNetworkReachable; ++ (NSString *)languageID; +//+ (UIView *)mainSDLViewInstance; ++ (NSString *)seed; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/HWUtils.m --- a/project_files/HedgewarsMobile/Classes/HWUtils.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/HWUtils.m Sat Dec 30 01:22:11 2017 +0100 @@ -35,33 +35,33 @@ #pragma mark - #pragma mark game status and type info -+(TGameType) gameType { ++ (TGameType)gameType { return gameType; } -+(void) setGameType:(TGameType) type { ++ (void)setGameType:(TGameType)type { gameType = type; } -+(TGameStatus) gameStatus { ++ (TGameStatus)gameStatus { return gameStatus; } -+(void) setGameStatus:(TGameStatus) status { ++ (void)setGameStatus:(TGameStatus)status { gameStatus = status; } -+(BOOL) isGameLaunched { ++ (BOOL)isGameLaunched { return ((gameStatus == gsLoading) || (gameStatus == gsInGame)); } -+(BOOL) isGameRunning { ++ (BOOL)isGameRunning { return (gameStatus == gsInGame); } #pragma mark - #pragma mark Helper Functions with cache -+(NSString *)modelType { ++ (NSString *)modelType { if (cachedModel == nil) { size_t size; // set 'oldp' parameter to NULL to get the size of the data returned so we can allocate appropriate amount of space @@ -70,13 +70,13 @@ // get the platform name sysctlbyname("hw.machine", name, &size, NULL, 0); - cachedModel = [[NSString stringWithUTF8String:name] retain]; + cachedModel = [NSString stringWithUTF8String:name]; free(name); } return cachedModel; } -+(NSArray *)teamColors { ++ (NSArray *)teamColors { if (cachedColors == nil) { // by default colors are ARGB but we do computation over RGB, hence we have to "& 0x00FFFFFF" before processing unsigned int colors[] = HW_TEAMCOLOR_ARRAY; @@ -86,24 +86,23 @@ while(colors[i] != 0) [array addObject:[NSNumber numberWithUnsignedInt:(colors[i++] & 0x00FFFFFF)]]; - cachedColors = [[NSArray arrayWithArray:array] retain]; - [array release]; + cachedColors = [NSArray arrayWithArray:array]; } return cachedColors; } -+(void) releaseCache { - [cachedModel release], cachedModel = nil; - [cachedColors release], cachedColors = nil; ++ (void)releaseCache { + cachedModel = nil; + cachedColors = nil; // don't release activePorts here } #pragma mark - #pragma mark Helper Functions without cache -+(NSInteger) randomPort { ++ (NSInteger)randomPort { // set a new feed only at initialization time and forbid connecting to the server port if (activePorts == nil) { - activePorts = [[NSMutableArray arrayWithObject:[NSNumber numberWithInt:NETGAME_DEFAULT_PORT]] retain]; + activePorts = [NSMutableArray arrayWithObject:[NSNumber numberWithInt:NETGAME_DEFAULT_PORT]]; } // pick a random number from the free ports list @@ -117,11 +116,11 @@ return res; } -+(void) freePort:(NSInteger) port { ++ (void)freePort:(NSInteger)port { [activePorts removeObject:[NSNumber numberWithInteger:port]]; } -+(BOOL) isNetworkReachable { ++ (BOOL)isNetworkReachable { // Create zero addy struct sockaddr_in zeroAddress; bzero(&zeroAddress, sizeof(zeroAddress)); @@ -150,7 +149,6 @@ timeoutInterval:20.0]; NSURLConnection *testConnection = [[NSURLConnection alloc] initWithRequest:testRequest delegate:nil]; BOOL testResult = testConnection ? YES : NO; - [testConnection release]; return ((isReachable && !needsConnection) || nonWiFi) ? testResult : NO; } @@ -162,7 +160,7 @@ } /* -+(UIView *)mainSDLViewInstance { ++ (UIView *)mainSDLViewInstance { SDL_Window *window = HW_getSDLWindow(); if (window == NULL) { SDL_SetError("Window does not exist"); @@ -177,7 +175,7 @@ + (NSString *)seed { CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault); - NSString *seed = (NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuid); + NSString *seed = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, uuid)); CFRelease(uuid); return seed; } diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.h --- a/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.h Sat Dec 30 01:22:11 2017 +0100 @@ -28,8 +28,8 @@ UIWindow *uiwindow; } -@property (nonatomic,retain) MainMenuViewController *mainViewController; -@property (nonatomic,retain) UIWindow *uiwindow; +@property (nonatomic, strong) MainMenuViewController *mainViewController; +@property (nonatomic, strong) UIWindow *uiwindow; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m --- a/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m Sat Dec 30 01:22:11 2017 +0100 @@ -24,7 +24,7 @@ @implementation SDLUIKitDelegate (customDelegate) // hijack the the SDL_UIKitAppDelegate to use the UIApplicationDelegate we implement here -+(NSString *)getAppDelegateClassName { ++ (NSString *)getAppDelegateClassName { return @"HedgewarsAppDelegate"; } @@ -35,7 +35,7 @@ #pragma mark - #pragma mark AppDelegate methods --(id) init { +- (id)init { if ((self = [super init])) { mainViewController = nil; uiwindow = nil; @@ -43,14 +43,9 @@ return self; } --(void) dealloc { - [mainViewController release]; - [uiwindow release]; - [super dealloc]; -} // override the direct execution of SDL_main to allow us to implement our own frontend --(void) postFinishLaunch +- (void)postFinishLaunch { // Setup Appirater [Appirater setAppId:@"391234866"]; @@ -70,12 +65,11 @@ NSString *controllerName = (IS_IPAD() ? @"MainMenuViewController-iPad" : @"MainMenuViewController-iPhone"); self.mainViewController = [[MainMenuViewController alloc] initWithNibName:controllerName bundle:nil]; self.uiwindow.rootViewController = self.mainViewController; - [self.mainViewController release]; [self.uiwindow makeKeyAndVisible]; } --(void) applicationDidReceiveMemoryWarning:(UIApplication *)application { +- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { [HWUtils releaseCache]; // don't stop music if it is playing if ([HWUtils isGameLaunched]) { @@ -87,7 +81,7 @@ } // true multitasking with SDL works only on 4.2 and above; we close the game to avoid a black screen at return --(void) applicationWillResignActive:(UIApplication *)application { +- (void)applicationWillResignActive:(UIApplication *)application { if ([HWUtils isGameLaunched] && [[[UIDevice currentDevice] systemVersion] floatValue] < 4.2f) HW_terminate(NO); diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/HelpPageLobbyViewController.h --- a/project_files/HedgewarsMobile/Classes/HelpPageLobbyViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/HelpPageLobbyViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -24,8 +24,8 @@ UIScrollView *scrollView; } -@property (nonatomic, retain) IBOutlet UIScrollView *scrollView; +@property (nonatomic, strong) IBOutlet UIScrollView *scrollView; --(IBAction) dismiss; +- (IBAction)dismiss; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/HelpPageLobbyViewController.m --- a/project_files/HedgewarsMobile/Classes/HelpPageLobbyViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/HelpPageLobbyViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -23,17 +23,17 @@ @implementation HelpPageLobbyViewController @synthesize scrollView; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } --(void) didReceiveMemoryWarning { +- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; self.scrollView = nil; } // on iPhone the XIBs contain UIScrollView --(void) viewDidLoad { +- (void)viewDidLoad { if (IS_IPAD() == NO){ scrollView.contentSize = CGSizeMake(self.view.frame.size.width, 650); scrollView.maximumZoomScale = 4.0; @@ -44,17 +44,7 @@ [super viewDidLoad]; } --(void) viewDidUnload { - [super viewDidUnload]; - self.scrollView = nil; -} - --(void) dealloc { - releaseAndNil(scrollView); - [super dealloc]; -} - --(IBAction) dismiss { +- (IBAction)dismiss { [UIView animateWithDuration:0.5 animations:^{ self.view.alpha = 0; } completion:^(BOOL finished){ diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/HogHatViewController.h --- a/project_files/HedgewarsMobile/Classes/HogHatViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/HogHatViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -28,9 +28,9 @@ UIImage *normalHogSprite; } -@property (nonatomic,retain) NSDictionary *teamDictionary; +@property (nonatomic, strong) NSDictionary *teamDictionary; @property (nonatomic) NSInteger selectedHog; -@property (nonatomic,retain) NSArray *hatArray; -@property (nonatomic,retain) UIImage *normalHogSprite; +@property (nonatomic, strong) NSArray *hatArray; +@property (nonatomic, strong) UIImage *normalHogSprite; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/HogHatViewController.m --- a/project_files/HedgewarsMobile/Classes/HogHatViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/HogHatViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -24,13 +24,13 @@ @synthesize teamDictionary, hatArray, normalHogSprite, selectedHog; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; // load all the hat file names and store them into hatArray @@ -41,14 +41,12 @@ // load the base hog image, drawing will occure in cellForRow... NSString *normalHogFile = [[NSString alloc] initWithFormat:@"%@/basehat-hedgehog.png",[[NSBundle mainBundle] resourcePath]]; UIImage *hogSprite = [[UIImage alloc] initWithContentsOfFile:normalHogFile]; - [normalHogFile release]; self.normalHogSprite = hogSprite; - [hogSprite release]; self.title = NSLocalizedString(@"Change hedgehogs' hat",@""); } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // this updates the hog name and its hat @@ -60,11 +58,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.hatArray count]; } @@ -75,16 +73,14 @@ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; NSString *hat = [self.hatArray objectAtIndex:[indexPath row]]; cell.textLabel.text = [hat stringByDeletingPathExtension]; NSString *hatFile = [[NSString alloc] initWithFormat:@"%@/%@", HATS_DIRECTORY(), hat]; UIImage *hatSprite = [[UIImage alloc] initWithContentsOfFile: hatFile andCutAt:CGRectMake(0, 0, 32, 32)]; - [hatFile release]; cell.imageView.image = [self.normalHogSprite mergeWith:hatSprite atPoint:CGPointMake(0, 5)]; - [hatSprite release]; NSDictionary *hog = (self.selectedHog != -1) ? [[self.teamDictionary objectForKey:@"hedgehogs"] objectAtIndex:self.selectedHog] : nil; if ([[hat stringByDeletingPathExtension] isEqualToString:[hog objectForKey:@"hat"]]) { @@ -99,7 +95,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger selectedRow = [indexPath row]; NSString *newHat = [[self.hatArray objectAtIndex:selectedRow] stringByDeletingPathExtension]; @@ -134,32 +130,16 @@ NSMutableDictionary *newHog = [[NSMutableDictionary alloc] initWithDictionary:oldHog]; [newHog setObject:newHat forKey:@"hat"]; [hogsArray replaceObjectAtIndex:i withObject:newHog]; - [newHog release]; } } #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { MSG_MEMCLEAN(); [super didReceiveMemoryWarning]; } --(void) viewDidUnload { - self.normalHogSprite = nil; - self.teamDictionary = nil; - self.hatArray = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc { - releaseAndNil(hatArray); - releaseAndNil(teamDictionary); - releaseAndNil(normalHogSprite); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/HoldTableViewCell.h --- a/project_files/HedgewarsMobile/Classes/HoldTableViewCell.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/HoldTableViewCell.h Sat Dec 30 01:22:11 2017 +0100 @@ -22,17 +22,17 @@ @protocol HoldTableViewCellDelegate --(void) holdAction:(NSString *)content onTable:(UITableView *)aTableView; +- (void)holdAction:(NSString *)content onTable:(UITableView *)aTableView; @end @interface HoldTableViewCell : UITableViewCell { - id delegate; + id __weak delegate; NSTimeInterval time; } -@property (nonatomic,assign) id delegate; +@property (nonatomic, weak) id delegate; --(void) holdAction; +- (void)holdAction; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/HoldTableViewCell.m --- a/project_files/HedgewarsMobile/Classes/HoldTableViewCell.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/HoldTableViewCell.m Sat Dec 30 01:22:11 2017 +0100 @@ -26,14 +26,14 @@ #define SWIPE_DRAG_HORIZ_MIN 10 #define SWIPE_DRAG_VERT_MAX 40 --(id) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { +- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) { delegate = nil; } return self; } --(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; time = touch.timestamp; @@ -42,7 +42,7 @@ [super touchesBegan:touches withEvent:event]; } --(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; if ( touch.timestamp - time < 0.25 ) { @@ -55,7 +55,7 @@ [super touchesCancelled:touches withEvent:event]; } --(void) holdAction { +- (void)holdAction { if (self.delegate != nil && [self.delegate respondsToSelector:@selector(holdAction:onTable:)]) { UITableView *tableView = [self findTable]; @@ -66,9 +66,4 @@ } } --(void) dealloc { - self.delegate = nil; - [super dealloc]; -} - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/IniParser.m --- a/project_files/HedgewarsMobile/Classes/IniParser.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/IniParser.m Sat Dec 30 01:22:11 2017 +0100 @@ -22,10 +22,10 @@ #define SECTION_START_CHAR '[' @interface IniParser () -@property (nonatomic, retain) NSString *iniFilePath; +@property (nonatomic, strong) NSString *iniFilePath; -@property (nonatomic, retain) NSMutableArray *mutableSections; -@property (nonatomic, retain) NSMutableDictionary *currentSection; +@property (nonatomic, strong) NSMutableArray *mutableSections; +@property (nonatomic, strong) NSMutableDictionary *currentSection; @end @implementation IniParser @@ -85,7 +85,6 @@ - (void)addPreviousSectionToSectionsIfNecessary { if (self.currentSection != nil) { [self.mutableSections addObject:self.currentSection]; - [self.currentSection release]; } } @@ -110,13 +109,4 @@ return [self.mutableSections copy]; } -#pragma mark - Dealloc - -- (void)dealloc { - [_iniFilePath release]; - [_mutableSections release]; - [_currentSection release]; - [super dealloc]; -} - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/LevelViewController.h --- a/project_files/HedgewarsMobile/Classes/LevelViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/LevelViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -30,9 +30,9 @@ NSInteger numberOfSections; } -@property (nonatomic,retain) NSDictionary *teamDictionary; -@property (nonatomic,retain) NSArray *levelArray; -@property (nonatomic,retain) NSArray *levelSprites; -@property (nonatomic,retain) NSIndexPath *lastIndexPath; +@property (nonatomic, strong) NSDictionary *teamDictionary; +@property (nonatomic, strong) NSArray *levelArray; +@property (nonatomic, strong) NSArray *levelSprites; +@property (nonatomic, strong) NSIndexPath *lastIndexPath; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/LevelViewController.m --- a/project_files/HedgewarsMobile/Classes/LevelViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/LevelViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -23,13 +23,13 @@ @implementation LevelViewController @synthesize teamDictionary, levelArray, levelSprites, lastIndexPath; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; NSArray *array = [[NSArray alloc] initWithObjects: @@ -40,12 +40,11 @@ NSLocalizedString(@"Weaky",@""), nil]; self.levelArray = array; - [array release]; self.title = NSLocalizedString(@"Set difficulty level",@""); } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if ([[[[self.teamDictionary objectForKey:@"hedgehogs"] objectAtIndex:0] objectForKey:@"level"] intValue] == 0) @@ -60,11 +59,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return numberOfSections; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (section == 0) return 1; else @@ -83,11 +82,10 @@ if (section == 0) { cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier0]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier0] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier0]; UISwitch *theSwitch = [[UISwitch alloc] init]; [theSwitch addTarget:self action:@selector(switchValueChanged:) forControlEvents:UIControlEventValueChanged]; cell.accessoryView = theSwitch; - [theSwitch release]; } UISwitch *theSwitch = (UISwitch *)cell.accessoryView; if (numberOfSections == 1) @@ -98,7 +96,7 @@ } else { cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier1]; if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1]; cell.textLabel.text = [levelArray objectAtIndex:row]; NSDictionary *hog = [[self.teamDictionary objectForKey:@"hedgehogs"] objectAtIndex:0]; @@ -111,15 +109,13 @@ NSString *botlevelPath = [[NSString alloc] initWithFormat:@"%@/bot%d.png",[[NSBundle mainBundle] resourcePath],row+1]; UIImage *levelImage = [[UIImage alloc] initWithContentsOfFile:botlevelPath]; - [botlevelPath release]; cell.imageView.image = levelImage; - [levelImage release]; } return cell; } --(void) switchValueChanged:(id) sender { +- (void)switchValueChanged:(id)sender { UISwitch *theSwitch = (UISwitch *)sender; NSIndexSet *sections = [[NSIndexSet alloc] initWithIndex:1]; NSMutableArray *hogs = [self.teamDictionary objectForKey:@"hedgehogs"]; @@ -134,7 +130,6 @@ [self.tableView deleteSections:sections withRowAnimation:UITableViewRowAnimationFade]; level = 0; } - [sections release]; DLog(@"New level is %ld", (long)level); for (NSMutableDictionary *hog in hogs) @@ -147,7 +142,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger newRow = [indexPath row]; NSInteger oldRow = (self.lastIndexPath != nil) ? [self.lastIndexPath row] : -1; @@ -174,29 +169,12 @@ #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { self.lastIndexPath = nil; MSG_MEMCLEAN(); [super didReceiveMemoryWarning]; } --(void) viewDidUnload { - self.lastIndexPath = nil; - self.teamDictionary = nil; - self.levelArray = nil; - self.levelSprites = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc { - releaseAndNil(levelArray); - releaseAndNil(levelSprites); - releaseAndNil(teamDictionary); - releaseAndNil(lastIndexPath); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/MNEValueTrackingSlider.h --- a/project_files/HedgewarsMobile/Classes/MNEValueTrackingSlider.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/MNEValueTrackingSlider.h Sat Dec 30 01:22:11 2017 +0100 @@ -17,6 +17,6 @@ } @property (nonatomic, readonly) CGRect thumbRect; -@property (nonatomic, retain) NSString *textValue; +@property (nonatomic, strong) NSString *textValue; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/MNEValueTrackingSlider.m --- a/project_files/HedgewarsMobile/Classes/MNEValueTrackingSlider.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/MNEValueTrackingSlider.m Sat Dec 30 01:22:11 2017 +0100 @@ -12,7 +12,7 @@ #pragma mark - #pragma mark Private UIView subclass rendering the popup showing slider value @interface SliderValuePopupView : UIView -@property (nonatomic, retain) UIFont *font; +@property (nonatomic, strong) UIFont *font; @property (nonatomic, copy) NSString *text; @property (nonatomic) float arrowOffset; @end @@ -23,7 +23,7 @@ @synthesize text = _text; @synthesize arrowOffset = _arrowOffset; --(id) initWithFrame:(CGRect) frame { +- (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.font = [UIFont boldSystemFontOfSize:18]; @@ -31,13 +31,8 @@ return self; } --(void) dealloc { - self.text = nil; - self.font = nil; - [super dealloc]; -} --(void) drawRect:(CGRect) rect { +- (void)drawRect:(CGRect)rect { // Create the path for the rounded rectangle CGRect roundedRect = CGRectMake(self.bounds.origin.x, self.bounds.origin.y, self.bounds.size.width, floorf(self.bounds.size.height * 0.8)); UIBezierPath *roundedRectPath = [UIBezierPath bezierPathWithRoundedRect:roundedRect cornerRadius:6.0]; @@ -95,14 +90,14 @@ #pragma mark Private methods --(void) _constructSlider { +- (void)_constructSlider { valuePopupView = [[SliderValuePopupView alloc] initWithFrame:CGRectZero]; valuePopupView.backgroundColor = [UIColor clearColor]; valuePopupView.alpha = 0.0; [self addSubview:valuePopupView]; } --(void) _fadePopupViewInAndOut:(BOOL)aFadeIn { +- (void)_fadePopupViewInAndOut:(BOOL)aFadeIn { [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.25]; if (aFadeIn) { @@ -113,7 +108,7 @@ [UIView commitAnimations]; } --(void) _positionAndUpdatePopupView { +- (void)_positionAndUpdatePopupView { CGRect _thumbRect = self.thumbRect; CGRect popupRect = CGRectOffset(_thumbRect, 0, -floorf(_thumbRect.size.height * 1.5)); // (-100, -15) determines the size of the the rect @@ -136,7 +131,7 @@ #pragma mark Memory management --(id) initWithFrame:(CGRect) frame { +- (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self _constructSlider]; @@ -144,7 +139,7 @@ return self; } --(id) initWithCoder:(NSCoder *)aDecoder { +- (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { [self _constructSlider]; @@ -152,15 +147,10 @@ return self; } --(void) dealloc { - [valuePopupView release]; - [textValue release]; - [super dealloc]; -} #pragma mark - #pragma mark UIControl touch event tracking --(BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { +- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { // Fade in and update the popup view CGPoint touchPoint = [touch locationInView:self]; // Check if the knob is touched. Only in this case show the popup-view @@ -171,17 +161,17 @@ return [super beginTrackingWithTouch:touch withEvent:event]; } --(BOOL) continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { +- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { // Update the popup view as slider knob is being moved [self _positionAndUpdatePopupView]; return [super continueTrackingWithTouch:touch withEvent:event]; } --(void) cancelTrackingWithEvent:(UIEvent *)event { +- (void)cancelTrackingWithEvent:(UIEvent *)event { [super cancelTrackingWithEvent:event]; } --(void) endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { +- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { // Fade out the popoup view [self _fadePopupViewInAndOut:NO]; [super endTrackingWithTouch:touch withEvent:event]; diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/MXAudioPlayerFadeOperation.h --- a/project_files/HedgewarsMobile/Classes/MXAudioPlayerFadeOperation.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/MXAudioPlayerFadeOperation.h Sat Dec 30 01:22:11 2017 +0100 @@ -20,7 +20,7 @@ // The AVAudioPlayer that the volume fade will be applied to. // Retained until the fade is completed. // Must be set with init method. -@property (nonatomic, retain, readonly) AVAudioPlayer *audioPlayer; +@property (nonatomic, strong, readonly) AVAudioPlayer *audioPlayer; // The duration of the volume fade. // Default value is 1.0 diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/MXAudioPlayerFadeOperation.m --- a/project_files/HedgewarsMobile/Classes/MXAudioPlayerFadeOperation.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/MXAudioPlayerFadeOperation.m Sat Dec 30 01:22:11 2017 +0100 @@ -10,7 +10,7 @@ #define SKVolumeChangesPerSecond 15 @interface MXAudioPlayerFadeOperation () -@property (nonatomic, retain, readwrite) AVAudioPlayer *audioPlayer; +@property (nonatomic, strong, readwrite) AVAudioPlayer *audioPlayer; - (void)beginFadeOperation; - (void)finishFadeOperation; @end @@ -31,23 +31,22 @@ - (AVAudioPlayer *)audioPlayer { AVAudioPlayer *result; @synchronized(self) { - result = [_audioPlayer retain]; + result = _audioPlayer; } - return [result autorelease]; + return result; } - (void)setAudioPlayer:(AVAudioPlayer *)anAudioPlayer { @synchronized(self) { if (_audioPlayer != anAudioPlayer) { - [_audioPlayer release]; - _audioPlayer = [anAudioPlayer retain]; + _audioPlayer = anAudioPlayer; } } } #pragma mark - #pragma mark NSOperation --(id) initFadeWithAudioPlayer:(AVAudioPlayer*)player toVolume:(float)volume overDuration:(NSTimeInterval)duration withDelay:(NSTimeInterval)timeDelay { +- (id)initFadeWithAudioPlayer:(AVAudioPlayer*)player toVolume:(float)volume overDuration:(NSTimeInterval)duration withDelay:(NSTimeInterval)timeDelay { if ((self = [super init])) { self.audioPlayer = player; [player prepareToPlay]; @@ -125,10 +124,6 @@ if ([self.audioPlayer isPlaying] && _stopAfterFade) [self.audioPlayer stop]; } -- (void)dealloc { - releaseAndNil(_audioPlayer); - [super dealloc]; -} @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/MainMenuViewController.h --- a/project_files/HedgewarsMobile/Classes/MainMenuViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -21,6 +21,6 @@ @interface MainMenuViewController : UIViewController --(IBAction) switchViews:(id)sender; +- (IBAction)switchViews:(id)sender; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/MainMenuViewController.m --- a/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -50,12 +50,12 @@ @implementation MainMenuViewController --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - --(void) viewDidLoad { +- (void)viewDidLoad { self.view.frame = [[UIScreen mainScreen] safeBounds]; [super viewDidLoad]; @@ -108,31 +108,30 @@ - (void) presentViewController:(UIViewController *)vc { [self presentViewController:vc animated:NO completion:nil]; - [vc release]; } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [[AudioManagerController mainManager] playBackgroundMusic]; [super viewWillAppear:animated]; } #pragma mark - --(IBAction) switchViews:(id) sender { +- (IBAction)switchViews:(id)sender { UIButton *button = (UIButton *)sender; UIAlertView *alert; NSString *xib = nil; [[AudioManagerController mainManager] playClickSound]; switch (button.tag) { - case 0: + case 0: { xib = IS_IPAD() ? @"GameConfigViewController-iPad" : @"GameConfigViewController-iPhone"; GameConfigViewController *gcvc = [[GameConfigViewController alloc] initWithNibName:xib bundle:nil]; gcvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentViewController:gcvc animated:YES completion:nil]; - [gcvc release]; break; + } case 2: if (IS_IPAD()) { @@ -140,23 +139,18 @@ SettingsBaseViewController *rightController = [[SettingsBaseViewController alloc] init]; rightController.targetController = nil; UINavigationController *rightNavController = [[UINavigationController alloc] initWithRootViewController:rightController]; - [rightController release]; // the contens on the left of the splitview, setting targetController that will receive push/pop actions SettingsBaseViewController *leftController = [[SettingsBaseViewController alloc] init]; leftController.targetController = rightNavController.topViewController; UINavigationController *leftNavController = [[UINavigationController alloc] initWithRootViewController:leftController]; - [leftController release]; MGSplitViewController *splitViewRootController = [[MGSplitViewController alloc] init]; splitViewRootController.delegate = nil; splitViewRootController.showsMasterInPortrait = YES; splitViewRootController.viewControllers = [NSArray arrayWithObjects:leftNavController, rightNavController, nil]; - [leftNavController release]; - [rightNavController release]; [self presentViewController:splitViewRootController animated:YES completion:nil]; - [splitViewRootController release]; } else { @@ -165,44 +159,32 @@ UIViewController *generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; generalSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"General",@"") imageName:@"flower" selectedImageName:@"flower_filled"]; UINavigationController *generalNavController = [[UINavigationController alloc] initWithRootViewController:generalSettingsViewController]; - [generalSettingsViewController release]; [tabBarNavigationControllers addObject:generalNavController]; - [generalNavController release]; UIViewController *teamSettingsViewController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; teamSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Teams",@"") imageName:@"teams" selectedImageName:@"teams_filled"]; UINavigationController *teamNavController = [[UINavigationController alloc] initWithRootViewController:teamSettingsViewController]; - [teamSettingsViewController release]; [tabBarNavigationControllers addObject:teamNavController]; - [teamNavController release]; UIViewController *weaponSettingsViewController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; weaponSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Weapons",@"") imageName:@"bullet" selectedImageName:@"bullet_filled"]; UINavigationController *weaponNavController = [[UINavigationController alloc] initWithRootViewController:weaponSettingsViewController]; - [weaponSettingsViewController release]; [tabBarNavigationControllers addObject:weaponNavController]; - [weaponNavController release]; UIViewController *schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; schemeSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Schemes",@"") imageName:@"target" selectedImageName:@"target_filled"]; UINavigationController *schemeNavController = [[UINavigationController alloc] initWithRootViewController:schemeSettingsViewController]; - [schemeSettingsViewController release]; [tabBarNavigationControllers addObject:schemeNavController]; - [schemeNavController release]; UIViewController *supportViewController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped]; supportViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Support",@"") imageName:@"heart" selectedImageName:@"heart_filled"]; UINavigationController *supportNavController = [[UINavigationController alloc] initWithRootViewController:supportViewController]; - [supportViewController release]; [tabBarNavigationControllers addObject:supportNavController]; - [supportNavController release]; UITabBarController *settingsTabController = [[UITabBarController alloc] init]; settingsTabController.viewControllers = tabBarNavigationControllers; - [tabBarNavigationControllers release]; [self presentViewController:settingsTabController animated:YES completion:nil]; - [settingsTabController release]; } break; case 3: @@ -210,10 +192,8 @@ { GameLogViewController *gameLogVC = [[GameLogViewController alloc] init]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:gameLogVC]; - [gameLogVC release]; [self presentViewController:navController animated:YES completion:nil]; - [navController release]; } #else { @@ -222,7 +202,6 @@ about.modalPresentationStyle = UIModalPresentationFormSheet; [self presentViewController:about animated:YES completion:nil]; - [about release]; } #endif break; @@ -233,7 +212,6 @@ savedgames.modalPresentationStyle = UIModalPresentationPageSheet; [self presentViewController:savedgames animated:YES completion:nil]; - [savedgames release]; } break; case 5: @@ -244,36 +222,34 @@ missions.modalPresentationStyle = UIModalPresentationPageSheet; [self presentViewController:missions animated:YES completion:nil]; - [missions release]; } break; - case 6: + case 6: { [GameInterfaceBridge registerCallingController:self]; [GameInterfaceBridge startSimpleGame]; break; + } case 7: { xib = IS_IPAD() ? @"CampaignsViewController-iPad" : @"CampaignsViewController-iPhone"; CampaignsViewController *campaigns = [[CampaignsViewController alloc] initWithNibName:xib bundle:nil]; UINavigationController *campaignNavigationController = [[UINavigationController alloc] initWithRootViewController:campaigns]; - [campaigns release]; campaignNavigationController.modalTransitionStyle = IS_IPAD() ? UIModalTransitionStyleCoverVertical : UIModalTransitionStyleCrossDissolve; campaignNavigationController.modalPresentationStyle = UIModalPresentationPageSheet; [self presentViewController:campaignNavigationController animated:YES completion:nil]; - [campaignNavigationController release]; } break; - default: + default: { alert = [[UIAlertView alloc] initWithTitle:@"Not Yet Implemented" message:@"Sorry, this feature is not yet implemented" delegate:nil cancelButtonTitle:@"Well, don't worry" otherButtonTitles:nil]; [alert show]; - [alert release]; break; + } } } @@ -281,27 +257,16 @@ imageName: (NSString *)imageName selectedImageName: (NSString *)selectedImageName { - return [[[UITabBarItem alloc] initWithTitle:title + return [[UITabBarItem alloc] initWithTitle:title image:[UIImage imageNamed:imageName] - selectedImage:[UIImage imageNamed:selectedImageName]] autorelease]; + selectedImage:[UIImage imageNamed:selectedImageName]]; } #pragma mark - --(void) viewDidUnload { - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} --(void) didReceiveMemoryWarning { +- (void)didReceiveMemoryWarning { MSG_MEMCLEAN(); [super didReceiveMemoryWarning]; } --(void) dealloc { - [_simpleGameButton release]; - [_missionsButton release]; - [_campaignButton release]; - [super dealloc]; -} - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/MapConfigViewController.h --- a/project_files/HedgewarsMobile/Classes/MapConfigViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/MapConfigViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -54,32 +54,32 @@ @property (nonatomic,assign) NSInteger oldPage; @property (nonatomic,assign) BOOL busy; @property (nonatomic,assign) NSInteger maxHogs; -@property (nonatomic,retain) NSString *seedCommand; -@property (nonatomic,retain) NSString *templateFilterCommand; -@property (nonatomic,retain) NSString *mapGenCommand; -@property (nonatomic,retain) NSString *mazeSizeCommand; -@property (nonatomic,retain) NSString *themeCommand; -@property (nonatomic,retain) NSString *staticMapCommand; -@property (nonatomic,retain) NSString *missionCommand; +@property (nonatomic, strong) NSString *seedCommand; +@property (nonatomic, strong) NSString *templateFilterCommand; +@property (nonatomic, strong) NSString *mapGenCommand; +@property (nonatomic, strong) NSString *mazeSizeCommand; +@property (nonatomic, strong) NSString *themeCommand; +@property (nonatomic, strong) NSString *staticMapCommand; +@property (nonatomic, strong) NSString *missionCommand; -@property (nonatomic,retain) IBOutlet MapPreviewButtonView *previewButton; -@property (nonatomic,retain) IBOutlet UITableView *tableView; -@property (nonatomic,retain) IBOutlet UILabel *maxLabel; -@property (nonatomic,retain) IBOutlet UISegmentedControl *segmentedControl; -@property (nonatomic,retain) IBOutlet MNEValueTrackingSlider *slider; +@property (nonatomic, strong) IBOutlet MapPreviewButtonView *previewButton; +@property (nonatomic, strong) IBOutlet UITableView *tableView; +@property (nonatomic, strong) IBOutlet UILabel *maxLabel; +@property (nonatomic, strong) IBOutlet UISegmentedControl *segmentedControl; +@property (nonatomic, strong) IBOutlet MNEValueTrackingSlider *slider; -@property (nonatomic,retain) NSIndexPath *lastIndexPath; -@property (nonatomic,retain) NSArray *dataSourceArray; +@property (nonatomic, strong) NSIndexPath *lastIndexPath; +@property (nonatomic, strong) NSArray *dataSourceArray; --(IBAction) mapButtonPressed:(id) sender; --(IBAction) sliderChanged:(id) sender; --(IBAction) sliderEndedChanging:(id) sender; --(IBAction) segmentedControlChanged:(id) sender; +- (IBAction)mapButtonPressed:(id)sender; +- (IBAction)sliderChanged:(id)sender; +- (IBAction)sliderEndedChanging:(id)sender; +- (IBAction)segmentedControlChanged:(id)sender; --(void) turnOnWidgets; --(void) turnOffWidgets; --(void) setMaxLabelText:(NSString *)str; --(void) updatePreview; +- (void)turnOnWidgets; +- (void)turnOffWidgets; +- (void)setMaxLabelText:(NSString *)str; +- (void)updatePreview; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/MapConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/MapConfigViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/MapConfigViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -30,16 +30,16 @@ oldPage, oldValue; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } --(IBAction) mapButtonPressed:(id) sender { +- (IBAction)mapButtonPressed:(id)sender { [[AudioManagerController mainManager] playClickSound]; [self updatePreview]; } --(void) updatePreview { +- (void)updatePreview { // don't generate a new preview while it's already generating one if (self.busy) return; @@ -48,7 +48,6 @@ NSString *seed = [HWUtils seed]; NSString *seedCmd = [[NSString alloc] initWithFormat:@"eseed {%@}", seed]; self.seedCommand = seedCmd; - [seedCmd release]; NSArray *source = [self.dataSourceArray objectAtIndex:scIndex]; if (isRandomness()) { @@ -57,7 +56,6 @@ [self.previewButton updatePreviewWithSeed:seed]; // the preview for static maps is loaded in didSelectRowAtIndexPath } - [seed release]; // perform as if user clicked on an entry NSIndexPath *theIndex = [NSIndexPath indexPathForRow:arc4random_uniform((int)[source count]) inSection:0]; @@ -66,7 +64,7 @@ [self.tableView scrollToRowAtIndexPath:theIndex atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; } --(void) turnOffWidgets { +- (void)turnOffWidgets { busy = YES; self.previewButton.alpha = 0.5f; self.previewButton.enabled = NO; @@ -77,7 +75,7 @@ #pragma mark - #pragma mark MapPreviewButtonView delegate methods --(void) turnOnWidgets { +- (void)turnOnWidgets { self.previewButton.alpha = 1.0f; self.previewButton.enabled = YES; self.segmentedControl.enabled = YES; @@ -85,12 +83,12 @@ self.busy = NO; } --(void) setMaxLabelText:(NSString *)str { +- (void)setMaxLabelText:(NSString *)str { self.maxHogs = [str intValue]; self.maxLabel.text = [NSString stringWithFormat:@"%@ %@",NSLocalizedString(@"Max Hogs:",@""),str]; } --(NSDictionary *)getDataForEngine { +- (NSDictionary *)getDataForEngine { NSDictionary *dictForEngine = [NSDictionary dictionaryWithObjectsAndKeys: self.seedCommand,@"seedCommand", self.templateFilterCommand,@"templateFilterCommand", @@ -102,11 +100,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } --(NSInteger) tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger) section { +- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section { return [[self.dataSourceArray objectAtIndex:scIndex] count]; } @@ -116,7 +114,7 @@ UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; NSArray *source = [self.dataSourceArray objectAtIndex:scIndex]; @@ -130,14 +128,12 @@ if (isRandomness()) { UIImage *image = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/%@/icon.png",THEMES_DIRECTORY(),labelString]]; cell.imageView.image = image; - [image release]; } else cell.imageView.image = nil; if (row == [self.lastIndexPath row]) { UIImageView *checkbox = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkbox.png"]]; cell.accessoryView = checkbox; - [checkbox release]; } else cell.accessoryView = nil; @@ -146,15 +142,13 @@ } // this set details for a static map (called by didSelectRowAtIndexPath) --(void) setDetailsForStaticMap:(NSInteger) index { +- (void)setDetailsForStaticMap:(NSInteger)index { NSArray *source = [self.dataSourceArray objectAtIndex:scIndex]; NSString *fileCfg = [[NSString alloc] initWithFormat:@"%@/%@/map.cfg", (scIndex == 1) ? MAPS_DIRECTORY() : MISSIONS_DIRECTORY(),[source objectAtIndex:index]]; NSString *contents = [[NSString alloc] initWithContentsOfFile:fileCfg encoding:NSUTF8StringEncoding error:NULL]; - [fileCfg release]; NSArray *split = [contents componentsSeparatedByString:@"\n"]; - [contents release]; // if the number is not set we keep 18 standard; // sometimes it's not set but there are trailing characters, we get around them with the second equation @@ -176,7 +170,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger newRow = [indexPath row]; NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; @@ -195,7 +189,6 @@ UITableViewCell *newCell = [aTableView cellForRowAtIndexPath:indexPath]; UIImageView *checkbox = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkbox.png"]]; newCell.accessoryView = checkbox; - [checkbox release]; UITableViewCell *oldCell = [aTableView cellForRowAtIndexPath:self.lastIndexPath]; oldCell.accessoryView = nil; @@ -209,7 +202,7 @@ #pragma mark slider & segmentedControl & button // this updates the label and the command keys when the slider is moved, depending of the selection in segmentedControl // no methods are called by this routine and you can pass nil to it --(IBAction) sliderChanged:(id) sender { +- (IBAction)sliderChanged:(id)sender { NSString *labelText; NSString *templateCommand; NSString *mazeCommand; @@ -282,7 +275,7 @@ } // update preview (if not busy and if its value really changed) as soon as the user lifts its finger up --(IBAction) sliderEndedChanging:(id) sender { +- (IBAction)sliderEndedChanging:(id)sender { int num = (int) (self.slider.value * 100); if (oldValue != num) { [self updatePreview]; @@ -293,7 +286,7 @@ // perform actions based on the activated section, then call updatePreview to visually update the selection // and if necessary update the table with a slide animation --(IBAction) segmentedControlChanged:(id) sender { +- (IBAction)segmentedControlChanged:(id)sender { NSString *mapgen, *staticmap, *mission; NSInteger newPage = self.segmentedControl.selectedSegmentIndex; @@ -372,7 +365,6 @@ NSString *checkPath = [[NSString alloc] initWithFormat:@"%@/%@/icon.png",THEMES_DIRECTORY(),themeName]; if ([[NSFileManager defaultManager] fileExistsAtPath:checkPath]) [themeArray addObject:themeName]; - [checkPath release]; } // remove images that are too big for certain devices without loading the whole image @@ -398,17 +390,13 @@ [missionArray addObject:str]; } NSArray *array = [[NSArray alloc] initWithObjects:themeArray,mapArray,themeArray,missionArray,nil]; - [missionArray release]; - [themeArray release]; - [mapArray release]; self.dataSourceArray = array; - [array release]; } return dataSourceArray; } --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; [self localizeSegmentedControl]; @@ -436,44 +424,21 @@ UILabel *backLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 14, 300, 190) andTitle:nil withBorderWidth:2.3f]; backLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; [self.view insertSubview:backLabel belowSubview:self.segmentedControl]; - [backLabel release]; } self.tableView.separatorColor = [UIColor whiteColor]; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; } --(void) viewDidAppear:(BOOL) animated { +- (void)viewDidAppear:(BOOL) animated { [self updatePreview]; [super viewDidAppear:animated]; } --(void) viewDidUnload { - self.previewButton = nil; - self.seedCommand = nil; - self.templateFilterCommand = nil; - self.mapGenCommand = nil; - self.mazeSizeCommand = nil; - self.themeCommand = nil; - self.staticMapCommand = nil; - self.missionCommand = nil; - - self.tableView = nil; - self.maxLabel = nil; - self.segmentedControl = nil; - self.slider = nil; - - self.lastIndexPath = nil; - self.dataSourceArray = nil; - - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) didReceiveMemoryWarning { +- (void)didReceiveMemoryWarning { self.dataSourceArray = nil; [super didReceiveMemoryWarning]; @@ -487,25 +452,4 @@ MSG_MEMCLEAN(); } --(void) dealloc { - releaseAndNil(seedCommand); - releaseAndNil(templateFilterCommand); - releaseAndNil(mapGenCommand); - releaseAndNil(mazeSizeCommand); - releaseAndNil(themeCommand); - releaseAndNil(staticMapCommand); - releaseAndNil(missionCommand); - - releaseAndNil(previewButton); - releaseAndNil(tableView); - releaseAndNil(maxLabel); - releaseAndNil(segmentedControl); - releaseAndNil(slider); - - releaseAndNil(lastIndexPath); - releaseAndNil(dataSourceArray); - - [super dealloc]; -} - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/MapPreviewButtonView.h --- a/project_files/HedgewarsMobile/Classes/MapPreviewButtonView.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/MapPreviewButtonView.h Sat Dec 30 01:22:11 2017 +0100 @@ -23,25 +23,25 @@ @protocol MapPreviewViewDelegate --(void) turnOnWidgets; --(void) setMaxLabelText:(NSString *)string; --(NSDictionary *)getDataForEngine; +- (void)turnOnWidgets; +- (void)setMaxLabelText:(NSString *)string; +- (NSDictionary *)getDataForEngine; @end @interface MapPreviewButtonView : UIButton { - id delegate; + id __weak delegate; TCPsocket sd, csd; NSInteger maxHogs; } -@property (nonatomic,assign) id delegate; +@property (nonatomic,weak) id delegate; --(void) setImageRounded:(UIImage *)image forState:(UIControlState) controlState; --(void) setImageRounded:(UIImage *)image; --(void) updatePreviewWithSeed:(NSString *)seed; --(void) updatePreviewWithFile:(NSString *)filePath; --(void) turnOnWidgets; --(NSDictionary *)getDataForEngine; +- (void)setImageRounded:(UIImage *)image forState:(UIControlState)controlState; +- (void)setImageRounded:(UIImage *)image; +- (void)updatePreviewWithSeed:(NSString *)seed; +- (void)updatePreviewWithFile:(NSString *)filePath; +- (void)turnOnWidgets; +- (NSDictionary *)getDataForEngine; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/MapPreviewButtonView.m --- a/project_files/HedgewarsMobile/Classes/MapPreviewButtonView.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/MapPreviewButtonView.m Sat Dec 30 01:22:11 2017 +0100 @@ -31,7 +31,7 @@ @implementation MapPreviewButtonView @synthesize delegate; --(id) initWithFrame:(CGRect)frame { +- (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { delegate = nil; self.backgroundColor = [UIColor whiteColor]; @@ -40,18 +40,13 @@ return self; } --(void) dealloc { - self.delegate = nil; - [super dealloc]; -} - #pragma mark - #pragma mark image wrappers --(void) setImageRounded:(UIImage *)image forState:(UIControlState)controlState { +- (void)setImageRounded:(UIImage *)image forState:(UIControlState)controlState { [self setImage:[image makeRoundCornersOfSize:CGSizeMake(12, 12)] forState:controlState]; } --(void) setImageRounded:(UIImage *)image { +- (void)setImageRounded:(UIImage *)image { [self setImageRounded:image forState:UIControlStateNormal]; } @@ -64,7 +59,7 @@ return SDLNet_TCP_Send(csd, [string UTF8String], length); } --(void) engineProtocol:(uint8_t *)unpackedMap { +- (void)engineProtocol:(uint8_t *)unpackedMap { IPaddress ip; BOOL serverQuit = NO; uint8_t packedMap[128*32]; @@ -98,13 +93,11 @@ @"--user-prefix", documentsDirectory, @"--landpreview", nil]; - [ipcString release]; int argc = [gameParameters count]; const char **argv = (const char **)malloc(sizeof(const char*)*argc); for (int i = 0; i < argc; i++) argv[i] = strdup([[gameParameters objectAtIndex:i] UTF8String]); - [gameParameters release]; RunEngine(argc, argv); @@ -154,7 +147,7 @@ return; } --(void) drawingThread { +- (void)drawingThread { @autoreleasepool { uint8_t unpackedMap[128*32*8]; @@ -174,7 +167,6 @@ [self performSelectorOnMainThread:@selector(setImageRounded:) withObject:previewImage waitUntilDone:NO]; - [previewImage release]; [self performSelectorOnMainThread:@selector(setLabelText:) withObject:[NSString stringWithFormat:@"%ld", (long)maxHogs] waitUntilDone:NO]; @@ -188,7 +180,7 @@ } } --(void) updatePreviewWithSeed:(NSString *)seed { +- (void)updatePreviewWithSeed:(NSString *)seed { // remove the current preview and title [self setImage:nil forState:UIControlStateNormal]; [self setTitle:nil forState:UIControlStateNormal]; @@ -205,22 +197,20 @@ indicator.tag = INDICATOR_TAG; [indicator startAnimating]; [self addSubview:indicator]; - [indicator release]; // let's draw in a separate thread so the gui can work; at the end it restore other widgets [NSThread detachNewThreadSelector:@selector(drawingThread) toTarget:self withObject:nil]; } } --(void) updatePreviewWithFile:(NSString *)filePath { +- (void)updatePreviewWithFile:(NSString *)filePath { UIImage *image = [[UIImage alloc] initWithContentsOfFile:filePath]; [self setImageRounded:image forState:UIControlStateNormal]; self.backgroundColor = [UIColor whiteColor]; self.layer.cornerRadius = 12; - [image release]; } --(void) removeIndicator { +- (void)removeIndicator { UIActivityIndicatorView *indicator = (UIActivityIndicatorView *)[self viewWithTag:INDICATOR_TAG]; if (indicator) { [indicator stopAnimating]; @@ -230,17 +220,17 @@ #pragma mark - #pragma mark delegate --(void) turnOnWidgets { +- (void)turnOnWidgets { if ([self.delegate respondsToSelector:@selector(turnOnWidgets)]) [self.delegate turnOnWidgets]; } --(void) setLabelText:(NSString *)string { +- (void)setLabelText:(NSString *)string { if ([self.delegate respondsToSelector:@selector(setMaxLabelText:)]) [self.delegate setMaxLabelText:string]; } --(NSDictionary *)getDataForEngine { +- (NSDictionary *)getDataForEngine { if ([self.delegate respondsToSelector:@selector(getDataForEngine)]) return [self.delegate getDataForEngine]; return nil; diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/MissionTrainingViewController.h --- a/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -22,14 +22,14 @@ @interface MissionTrainingViewController : UIViewController -@property (nonatomic, retain) NSArray *listOfMissionIDs; -@property (nonatomic, retain) NSDictionary *dictOfMissions; -@property (nonatomic, retain) NSString *missionName; +@property (nonatomic, strong) NSArray *listOfMissionIDs; +@property (nonatomic, strong) NSDictionary *dictOfMissions; +@property (nonatomic, strong) NSString *missionName; -@property (nonatomic, retain) IBOutlet UIImageView *previewImage; -@property (nonatomic, retain) IBOutlet UITableView *tableView; -@property (nonatomic, retain) IBOutlet UILabel *descriptionLabel; +@property (nonatomic, strong) IBOutlet UIImageView *previewImage; +@property (nonatomic, strong) IBOutlet UITableView *tableView; +@property (nonatomic, strong) IBOutlet UILabel *descriptionLabel; --(IBAction) buttonPressed:(id) sender; +- (IBAction)buttonPressed:(id)sender; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/MissionTrainingViewController.m --- a/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -24,13 +24,13 @@ @implementation MissionTrainingViewController --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View management --(void) viewDidLoad +- (void)viewDidLoad { [super viewDidLoad]; @@ -54,14 +54,14 @@ self.descriptionLabel.textColor = [UIColor lightYellowColor]; } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { NSIndexPath *indexPath = [NSIndexPath indexPathForRow:arc4random_uniform((int)[self.listOfMissionIDs count]) inSection:0]; [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionMiddle]; [self tableView:self.tableView didSelectRowAtIndexPath:indexPath]; [super viewWillAppear:animated]; } --(IBAction) buttonPressed:(id) sender { +- (IBAction)buttonPressed:(id)sender { UIButton *button = (UIButton *)sender; if (button.tag == 0) { @@ -87,8 +87,6 @@ NSDictionary *missionsDict = [self newMissionsDictionaryFromMissionsFile:missionsDescLocation]; NSDictionary *localizedMissionsDict = [self newMissionsDictionaryFromMissionsFile:localizedMissionsDescLocation]; - [missionsDescLocation release]; - [localizedMissionsDescLocation release]; NSMutableDictionary *tempMissionsDict = [[NSMutableDictionary alloc] init]; @@ -104,8 +102,6 @@ } } - [missionsDict release]; - [localizedMissionsDict release]; return tempMissionsDict; } @@ -113,8 +109,6 @@ { NSDictionary *missionsDict = [self newMissionsDictionaryFromMissionsFile:missionsDescLocation]; - [missionsDescLocation release]; - [localizedMissionsDescLocation release]; return missionsDict; } @@ -126,7 +120,6 @@ NSString *missionsFileContents = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL]; NSArray *missionsLines = [missionsFileContents componentsSeparatedByString:@"\n"]; - [missionsFileContents release]; for (NSString *line in missionsLines) { @@ -151,7 +144,6 @@ { NSMutableDictionary *missionDict = [[NSMutableDictionary alloc] init]; [missionsDict setObject:missionDict forKey:missionID]; - [missionDict release]; } NSMutableDictionary *missionDict = [missionsDict objectForKey:missionID]; @@ -200,11 +192,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.listOfMissionIDs count]; } @@ -218,8 +210,8 @@ UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:(IS_IPAD()) ? UITableViewCellStyleDefault : UITableViewCellStyleSubtitle - reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:(IS_IPAD()) ? UITableViewCellStyleDefault : UITableViewCellStyleSubtitle + reuseIdentifier:CellIdentifier]; NSString *missionID = [self.listOfMissionIDs objectAtIndex:row]; cell.textLabel.text = self.dictOfMissions[missionID][@"name"]; @@ -240,7 +232,6 @@ bgColorView.backgroundColor = [UIColor colorWithRed:(85.0/255.0) green:(15.0/255.0) blue:(106.0/255.0) alpha:1.0]; bgColorView.layer.masksToBounds = YES; cell.selectedBackgroundView = bgColorView; - [bgColorView release]; cell.backgroundColor = [UIColor blackColorTransparent]; return cell; @@ -248,16 +239,14 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger row = [indexPath row]; self.missionName = [self.listOfMissionIDs objectAtIndex:row]; NSString *size = IS_IPAD() ? @"@2x" : @""; NSString *filePath = [[NSString alloc] initWithFormat:@"%@/Missions/Training/%@%@.png",GRAPHICS_DIRECTORY(),self.missionName,size]; UIImage *img = [[UIImage alloc] initWithContentsOfFile:filePath]; - [filePath release]; [self.previewImage setImage:img]; - [img release]; self.descriptionLabel.text = self.dictOfMissions[self.missionName][@"desc"]; } @@ -265,7 +254,7 @@ #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning +- (void)didReceiveMemoryWarning { self.missionName = nil; self.listOfMissionIDs = nil; @@ -275,29 +264,4 @@ [super didReceiveMemoryWarning]; } --(void) viewDidUnload -{ - self.listOfMissionIDs = nil; - self.dictOfMissions = nil; - self.previewImage = nil; - self.tableView = nil; - self.descriptionLabel = nil; - self.missionName = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - - --(void) dealloc -{ - releaseAndNil(_listOfMissionIDs); - releaseAndNil(_dictOfMissions); - releaseAndNil(_previewImage); - releaseAndNil(_tableView); - releaseAndNil(_descriptionLabel); - releaseAndNil(_missionName); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/ObjcExports.m --- a/project_files/HedgewarsMobile/Classes/ObjcExports.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/ObjcExports.m Sat Dec 30 01:22:11 2017 +0100 @@ -50,7 +50,6 @@ UIViewAutoresizingFlexibleBottomMargin; [overlay_instance.loadingIndicator startAnimating]; [overlay_instance.view addSubview:overlay_instance.loadingIndicator]; - [overlay_instance.loadingIndicator release]; */ } diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/RestoreViewController.h --- a/project_files/HedgewarsMobile/Classes/RestoreViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/RestoreViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -24,6 +24,6 @@ } --(IBAction) buttonReleased:(id) sender; +- (IBAction)buttonReleased:(id)sender; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/RestoreViewController.m --- a/project_files/HedgewarsMobile/Classes/RestoreViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/RestoreViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -21,17 +21,17 @@ #import "GameInterfaceBridge.h" @interface RestoreViewController () -@property (retain, nonatomic) IBOutlet UIButton *restoreButton; -@property (retain, nonatomic) IBOutlet UIButton *dismissButton; +@property (strong, nonatomic) IBOutlet UIButton *restoreButton; +@property (strong, nonatomic) IBOutlet UIButton *dismissButton; @end @implementation RestoreViewController --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } --(IBAction) buttonReleased:(id) sender { +- (IBAction)buttonReleased:(id)sender { UIButton *theButton = (UIButton *)sender; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; @@ -54,7 +54,7 @@ [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; } --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; [self.restoreButton setTitle:NSLocalizedString(@"Restore", nil) forState:UIControlStateNormal]; @@ -64,19 +64,12 @@ [self.dismissButton applyDarkBlueQuickStyle]; } --(void) didReceiveMemoryWarning { +#pragma mark - +#pragma mark Memory Management + +- (void)didReceiveMemoryWarning { + MSG_MEMCLEAN(); [super didReceiveMemoryWarning]; } --(void) viewDidUnload { - [super viewDidUnload]; -} - --(void) dealloc { - [_restoreButton release]; - [_dismissButton release]; - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SavedGamesViewController.h --- a/project_files/HedgewarsMobile/Classes/SavedGamesViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SavedGamesViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -26,9 +26,9 @@ NSMutableArray *listOfSavegames; } -@property (nonatomic,retain) IBOutlet UITableView *tableView; -@property (nonatomic,retain) NSMutableArray *listOfSavegames; +@property (nonatomic, strong) IBOutlet UITableView *tableView; +@property (nonatomic, strong) NSMutableArray *listOfSavegames; --(IBAction) buttonPressed:(id) sender; +- (IBAction)buttonPressed:(id)sender; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SavedGamesViewController.m --- a/project_files/HedgewarsMobile/Classes/SavedGamesViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SavedGamesViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -21,26 +21,25 @@ #import "GameInterfaceBridge.h" @interface SavedGamesViewController () -@property (retain, nonatomic) IBOutlet UIBarButtonItem *clearAllButton; +@property (strong, nonatomic) IBOutlet UIBarButtonItem *clearAllButton; @end @implementation SavedGamesViewController @synthesize tableView, listOfSavegames; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } --(void) updateTable { +- (void)updateTable { NSArray *contentsOfDir = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:SAVES_DIRECTORY() error:NULL]; NSMutableArray *array = [[NSMutableArray alloc] initWithArray:contentsOfDir copyItems:YES]; self.listOfSavegames = array; - [array release]; [self.tableView reloadData]; } --(void) viewDidLoad +- (void)viewDidLoad { [super viewDidLoad]; @@ -49,11 +48,9 @@ NSString *imgName = (IS_IPAD()) ? @"mediumBackground~ipad.png" : @"smallerBackground~iphone.png"; UIImage *img = [[UIImage alloc] initWithContentsOfFile:imgName]; UIImageView *background = [[UIImageView alloc] initWithImage:img]; - [img release]; background.frame = self.view.frame; background.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [self.view insertSubview:background atIndex:0]; - [background release]; [self.clearAllButton setTitle:NSLocalizedString(@"Clear All", nil)]; @@ -61,14 +58,14 @@ [self updateTable]; } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [self updateTable]; [super viewWillAppear:animated]; } #pragma mark - #pragma mark button functions --(IBAction) buttonPressed:(id) sender { +- (IBAction)buttonPressed:(id)sender { UIButton *button = (UIButton *)sender; if (button.tag == 0) { @@ -91,11 +88,10 @@ [actionSheet showFromBarButtonItem:(UIBarButtonItem *)sender animated:YES]; else [actionSheet showInView:self.view]; - [actionSheet release]; } } --(void) actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger) buttonIndex { +- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex { if ([actionSheet cancelButtonIndex] != buttonIndex) { // remove all files and recreate the directory [[NSFileManager defaultManager] removeItemAtPath:SAVES_DIRECTORY() error:NULL]; @@ -108,17 +104,16 @@ [self.listOfSavegames removeAllObjects]; [self.tableView deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationTop]; - [array release]; } } #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.listOfSavegames count]; } @@ -127,7 +122,7 @@ EditableCellView *editableCell = (EditableCellView *)[aTableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (editableCell == nil) { - editableCell = [[[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + editableCell = [[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; editableCell.delegate = nil; editableCell.textField.userInteractionEnabled = NO; } @@ -138,7 +133,7 @@ return (UITableViewCell *)editableCell; } --(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger) section { +-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 60)]; footer.backgroundColor = [UIColor clearColor]; @@ -152,15 +147,14 @@ label.backgroundColor = [UIColor clearColor]; [footer addSubview:label]; - [label release]; - return [footer autorelease]; + return footer; } -(CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return 60; } --(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { [(EditableCellView *)[self.tableView cellForRowAtIndexPath:indexPath] save:nil]; [self fixTagsForStartTag:[indexPath row]]; @@ -189,7 +183,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; if (self.listOfSavegames == nil) [self updateTable]; @@ -203,21 +197,18 @@ NSString *newFilePath = [[NSString alloc] initWithFormat:@"%@/%@",SAVES_DIRECTORY(),newSaveName]; [self.listOfSavegames addObject:newSaveName]; - [newSaveName release]; [[NSFileManager defaultManager] copyItemAtPath:currentFilePath toPath:newFilePath error:nil]; - [newFilePath release]; [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone]; [GameInterfaceBridge registerCallingController:self]; [GameInterfaceBridge startSaveGame:currentFilePath]; - [currentFilePath release]; } #pragma mark - #pragma mark editableCellView delegate // rename old file if names differ --(void) saveTextFieldValue:(NSString *)textString withTag:(NSInteger) tagValue { +- (void)saveTextFieldValue:(NSString *)textString withTag:(NSInteger)tagValue { if (self.listOfSavegames == nil) [self updateTable]; NSString *oldFilePath = [NSString stringWithFormat:@"%@/%@",SAVES_DIRECTORY(),[self.listOfSavegames objectAtIndex:tagValue]]; @@ -232,24 +223,11 @@ #pragma mark - #pragma mark Memory Management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { self.listOfSavegames = nil; MSG_MEMCLEAN(); [super didReceiveMemoryWarning]; } --(void) viewDidUnload { - self.tableView = nil; - self.listOfSavegames = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc { - releaseAndNil(tableView); - releaseAndNil(listOfSavegames); - releaseAndNil(_clearAllButton); - [super dealloc]; -} - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SchemeSettingsViewController.h --- a/project_files/HedgewarsMobile/Classes/SchemeSettingsViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SchemeSettingsViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -24,6 +24,6 @@ NSMutableArray *listOfSchemes; } -@property (nonatomic, retain) NSMutableArray *listOfSchemes; +@property (nonatomic, strong) NSMutableArray *listOfSchemes; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SchemeSettingsViewController.m --- a/project_files/HedgewarsMobile/Classes/SchemeSettingsViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SchemeSettingsViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -24,13 +24,13 @@ @implementation SchemeSettingsViewController @synthesize listOfSchemes; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Edit",@"") @@ -38,24 +38,22 @@ target:self action:@selector(toggleEdit:)]; self.navigationItem.rightBarButtonItem = editButton; - [editButton release]; self.navigationItem.title = NSLocalizedString(@"List of schemes", nil); } --(void) viewWillAppear:(BOOL) animated { +- (void)viewWillAppear:(BOOL) animated { [super viewWillAppear:animated]; NSArray *contentsOfDir = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:SCHEMES_DIRECTORY() error:NULL]; NSMutableArray *array = [[NSMutableArray alloc] initWithArray:contentsOfDir copyItems:YES]; self.listOfSchemes = array; - [array release]; [self.tableView reloadData]; } // modifies the navigation bar to add the "Add" and "Done" buttons --(void) toggleEdit:(id) sender { +- (void)toggleEdit:(id)sender { BOOL isEditing = self.tableView.editing; [self.tableView setEditing:!isEditing animated:YES]; @@ -71,11 +69,10 @@ target:self action:@selector(addScheme:)]; self.navigationItem.leftBarButtonItem = addButton; - [addButton release]; } } --(void) addScheme:(id) sender { +- (void)addScheme:(id)sender { NSString *fileName = [[NSString alloc] initWithFormat:@"Scheme %u.plist", [self.listOfSchemes count]]; [CreationChamber createSchemeNamed:[fileName stringByDeletingPathExtension]]; @@ -88,7 +85,6 @@ NSInteger index = [self.listOfSchemes indexOfObject:fileName]; [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; - [fileName release]; } #pragma mark - @@ -106,7 +102,7 @@ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } NSUInteger row = [indexPath row]; @@ -118,12 +114,11 @@ } // delete the row and the file --(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { NSUInteger row = [indexPath row]; NSString *schemeFile = [[NSString alloc] initWithFormat:@"%@/%@",SCHEMES_DIRECTORY(),[self.listOfSchemes objectAtIndex:row]]; [[NSFileManager defaultManager] removeItemAtPath:schemeFile error:NULL]; - [schemeFile release]; [self.listOfSchemes removeObjectAtIndex:row]; [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; @@ -131,7 +126,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { SingleSchemeViewController *singleSchemeViewController = [[SingleSchemeViewController alloc] initWithStyle:UITableViewStyleGrouped]; @@ -143,7 +138,6 @@ [singleSchemeViewController.tableView setContentOffset:CGPointMake(0,0) animated:NO]; [self.navigationController pushViewController:singleSchemeViewController animated:YES]; - [singleSchemeViewController release]; [tableView deselectRowAtIndexPath:indexPath animated:YES]; } @@ -151,26 +145,12 @@ #pragma mark - #pragma mark Memory management + -(void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; MSG_MEMCLEAN(); } --(void) viewDidUnload -{ - self.listOfSchemes = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - - --(void) dealloc -{ - releaseAndNil(listOfSchemes); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.h --- a/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -38,20 +38,20 @@ BOOL sectionsHidden; } -@property (nonatomic,retain) NSArray *listOfSchemes; -@property (nonatomic,retain) NSArray *listOfWeapons; -@property (nonatomic,retain) NSArray *listOfScripts; -@property (nonatomic,retain) NSIndexPath *lastIndexPath_sc; -@property (nonatomic,retain) NSIndexPath *lastIndexPath_we; -@property (nonatomic,retain) NSIndexPath *lastIndexPath_lu; -@property (nonatomic,retain) NSString *selectedScheme; -@property (nonatomic,retain) NSString *selectedWeapon; -@property (nonatomic,retain) NSString *selectedScript; -@property (nonatomic,retain) NSString *scriptCommand; -@property (nonatomic,retain) UISegmentedControl *topControl; -@property (nonatomic,assign) BOOL sectionsHidden; +@property (nonatomic, strong) NSArray *listOfSchemes; +@property (nonatomic, strong) NSArray *listOfWeapons; +@property (nonatomic, strong) NSArray *listOfScripts; +@property (nonatomic, strong) NSIndexPath *lastIndexPath_sc; +@property (nonatomic, strong) NSIndexPath *lastIndexPath_we; +@property (nonatomic, strong) NSIndexPath *lastIndexPath_lu; +@property (nonatomic, strong) NSString *selectedScheme; +@property (nonatomic, strong) NSString *selectedWeapon; +@property (nonatomic, strong) NSString *selectedScript; +@property (nonatomic, strong) NSString *scriptCommand; +@property (nonatomic, strong) UISegmentedControl *topControl; +@property (assign) BOOL sectionsHidden; --(void) fillSections; --(void) emptySections; +- (void)fillSections; +- (void)emptySections; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -29,7 +29,7 @@ @synthesize listOfSchemes, listOfWeapons, listOfScripts, lastIndexPath_sc, lastIndexPath_we, lastIndexPath_lu, selectedScheme, selectedWeapon, selectedScript, scriptCommand, topControl, sectionsHidden; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } @@ -85,19 +85,17 @@ NSLocalizedString(@"Weapon",@""), NSLocalizedString(@"Style",@""),nil]; UISegmentedControl *controller = [[UISegmentedControl alloc] initWithItems:array]; - [array release]; controller.segmentedControlStyle = UISegmentedControlStyleBar; controller.tintColor = [UIColor lightGrayColor]; controller.selectedSegmentIndex = 0; self.topControl = controller; - [controller release]; } return topControl; } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { self.sectionsHidden = NO; NSInteger topOffset = IS_IPAD() ? 45 : 0; @@ -116,7 +114,6 @@ withBorderWidth:2.7f]; background.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [self.view insertSubview:background atIndex:0]; - [background release]; self.topControl.frame = CGRectMake(0, 4, self.view.frame.size.width * 80/100, 30); self.topControl.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; @@ -128,9 +125,7 @@ UIImageView *background = [[UIImageView alloc] initWithImage:backgroundImage]; background.contentMode = UIViewContentModeScaleAspectFill; background.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - [backgroundImage release]; [self.view addSubview:background]; - [background release]; [aTableView setBackgroundColorForAnyTable:[UIColor clearColor]]; } @@ -140,7 +135,6 @@ aTableView.separatorStyle = UITableViewCellSeparatorStyleNone; aTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [self.view addSubview:aTableView]; - [aTableView release]; [super viewDidLoad]; @@ -157,11 +151,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)aTableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)aTableView { return (self.sectionsHidden ? 0 : 1); } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (self.topControl.selectedSegmentIndex == 0) return [self.listOfSchemes count]; else if (self.topControl.selectedSegmentIndex == 1) @@ -178,7 +172,7 @@ UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; cell.accessoryView = nil; if (0 == index) { @@ -186,11 +180,9 @@ NSString *str = [NSString stringWithFormat:@"%@/%@",SCHEMES_DIRECTORY(),[self.listOfSchemes objectAtIndex:row]]; NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:str]; cell.detailTextLabel.text = [dict objectForKey:@"description"]; - [dict release]; if ([[self.listOfSchemes objectAtIndex:row] isEqualToString:self.selectedScheme]) { UIImageView *checkbox = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkbox.png"]]; cell.accessoryView = checkbox; - [checkbox release]; self.lastIndexPath_sc = indexPath; } } else if (1 == index) { @@ -198,11 +190,9 @@ NSString *str = [NSString stringWithFormat:@"%@/%@",WEAPONS_DIRECTORY(),[self.listOfWeapons objectAtIndex:row]]; NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:str]; cell.detailTextLabel.text = [dict objectForKey:@"description"]; - [dict release]; if ([[self.listOfWeapons objectAtIndex:row] isEqualToString:self.selectedWeapon]) { UIImageView *checkbox = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkbox.png"]]; cell.accessoryView = checkbox; - [checkbox release]; self.lastIndexPath_we = indexPath; } } else { @@ -214,7 +204,6 @@ { UIImageView *checkbox = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkbox.png"]]; cell.accessoryView = checkbox; - [checkbox release]; self.lastIndexPath_lu = indexPath; } } @@ -228,7 +217,6 @@ if ([[self.listOfScripts objectAtIndex:row] isEqualToString:self.selectedScript]) { UIImageView *checkbox = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkbox.png"]]; cell.accessoryView = checkbox; - [checkbox release]; self.lastIndexPath_lu = indexPath; } } @@ -242,11 +230,11 @@ return cell; } --(CGFloat) tableView:(UITableView *)aTableView heightForHeaderInSection:(NSInteger) section { +-(CGFloat) tableView:(UITableView *)aTableView heightForHeaderInSection:(NSInteger)section { return IS_IPAD() ? 0 : 50; } --(UIView *)tableView:(UITableView *)aTableView viewForHeaderInSection:(NSInteger) section { +-(UIView *)tableView:(UITableView *)aTableView viewForHeaderInSection:(NSInteger)section { if (IS_IPAD()) return nil; UIView *theView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 30)]; @@ -255,14 +243,14 @@ self.topControl.center = CGPointMake(self.view.frame.size.width/2, 24); [self.topControl addTarget:aTableView action:@selector(reloadData) forControlEvents:UIControlEventValueChanged]; [theView addSubview:self.topControl]; - return [theView autorelease]; + return theView; } --(CGFloat) tableView:(UITableView *)aTableView heightForFooterInSection:(NSInteger) section { +-(CGFloat) tableView:(UITableView *)aTableView heightForFooterInSection:(NSInteger)section { return 40; } --(UIView *)tableView:(UITableView *)aTableView viewForFooterInSection:(NSInteger) section { +-(UIView *)tableView:(UITableView *)aTableView viewForFooterInSection:(NSInteger)section { NSInteger height = 40; UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, aTableView.frame.size.width, height)]; footer.backgroundColor = [UIColor clearColor]; @@ -280,13 +268,12 @@ label.text = NSLocalizedString(@"Setting a Style might force a particular Scheme or Weapon configuration.",@""); [footer addSubview:label]; - [label release]; - return [footer autorelease]; + return footer; } #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSIndexPath *lastIndexPath; NSInteger index = self.topControl.selectedSegmentIndex; if (index == 0) @@ -304,7 +291,6 @@ UITableViewCell *newCell = [aTableView cellForRowAtIndexPath:indexPath]; UIImageView *checkbox = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkbox.png"]]; newCell.accessoryView = checkbox; - [checkbox release]; UITableViewCell *oldCell = [aTableView cellForRowAtIndexPath:lastIndexPath]; oldCell.accessoryView = nil; @@ -350,9 +336,7 @@ // some styles disable or force the choice of a particular scheme/weaponset NSString *path = [[NSString alloc] initWithFormat:@"%@/%@.cfg",SCRIPTS_DIRECTORY(),[self.selectedScript stringByDeletingPathExtension]]; NSString *configFile = [[NSString alloc] initWithContentsOfFile:path]; - [path release]; NSArray *scriptOptions = [configFile componentsSeparatedByString:@"\n"]; - [configFile release]; self.scriptCommand = [NSString stringWithFormat:@"escript Scripts/Multiplayer/%@",self.selectedScript]; NSString *scheme = [scriptOptions objectAtIndex:0]; @@ -396,7 +380,7 @@ #pragma mark - #pragma mark called by an NSNotification to empty or fill the sections completely --(void) fillSections { +- (void)fillSections { if (self.sectionsHidden == YES) { self.sectionsHidden = NO; NSIndexSet *sections = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 1)]; @@ -407,7 +391,7 @@ } } --(void) emptySections { +- (void)emptySections { if (self.sectionsHidden == NO) { self.sectionsHidden = YES; NSIndexSet *sections = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 1)]; @@ -426,13 +410,13 @@ UIViewAutoresizingFlexibleBottomMargin; [self.view addSubview:theLabel]; - [theLabel release]; } } #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { self.listOfSchemes = nil; self.listOfWeapons = nil; self.listOfScripts = nil; @@ -440,37 +424,9 @@ [super didReceiveMemoryWarning]; } --(void) viewDidUnload { - self.listOfSchemes = nil; - self.listOfWeapons = nil; - self.listOfScripts = nil; - self.lastIndexPath_sc = nil; - self.lastIndexPath_we = nil; - self.lastIndexPath_lu = nil; - self.selectedScheme = nil; - self.selectedWeapon = nil; - self.selectedScript = nil; - self.scriptCommand = nil; - self.topControl = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc +- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; - releaseAndNil(listOfSchemes); - releaseAndNil(listOfWeapons); - releaseAndNil(listOfScripts); - releaseAndNil(lastIndexPath_sc); - releaseAndNil(lastIndexPath_we); - releaseAndNil(lastIndexPath_lu); - releaseAndNil(selectedScheme); - releaseAndNil(selectedWeapon); - releaseAndNil(selectedScript); - releaseAndNil(scriptCommand); - releaseAndNil(topControl); - [super dealloc]; } diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/ServerProtocolNetwork.h --- a/project_files/HedgewarsMobile/Classes/ServerProtocolNetwork.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/ServerProtocolNetwork.h Sat Dec 30 01:22:11 2017 +0100 @@ -29,12 +29,12 @@ @property (assign) TCPsocket ssd; @property (assign) NSInteger serverPort; -@property (nonatomic,retain) NSString *serverAddress; +@property (nonatomic, strong) NSString *serverAddress; --(id) init; --(id) init:(NSInteger) onPort withAddress:(NSString *)address; --(id) initOnPort:(NSInteger) port; --(id) initToAddress:(NSString *)address; +- (id)init; +- (id)init:(NSInteger)onPort withAddress:(NSString *)address; +- (id)initOnPort:(NSInteger)port; +- (id)initToAddress:(NSString *)address; +(id) openServerConnection; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/ServerProtocolNetwork.m --- a/project_files/HedgewarsMobile/Classes/ServerProtocolNetwork.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/ServerProtocolNetwork.m Sat Dec 30 01:22:11 2017 +0100 @@ -29,7 +29,7 @@ #pragma mark - #pragma mark init and class methods --(id) init:(NSInteger) onPort withAddress:(NSString *)address { +- (id)init:(NSInteger)onPort withAddress:(NSString *)address { if ((self = [super init])) { self.serverPort = onPort; self.serverAddress = address; @@ -38,22 +38,20 @@ return self; } --(id) init { +- (id)init { return [self init:NETGAME_DEFAULT_PORT withAddress:@"netserver.hedgewars.org"]; } --(id) initOnPort:(NSInteger) port { +- (id)initOnPort:(NSInteger)port { return [self init:port withAddress:@"netserver.hedgewars.org"]; } --(id) initToAddress:(NSString *)address { +- (id)initToAddress:(NSString *)address { return [self init:NETGAME_DEFAULT_PORT withAddress:address]; } --(void) dealloc { - releaseAndNil(serverAddress); +- (void)dealloc { serverConnection = nil; - [super dealloc]; } +(id) openServerConnection { @@ -61,7 +59,7 @@ [NSThread detachNewThreadSelector:@selector(serverProtocol) toTarget:connection withObject:nil]; - [connection retain]; // retain count here is +2 + // retain count here is +2 return connection; } @@ -70,18 +68,16 @@ -(int) sendToServer:(NSString *)command { NSString *message = [[NSString alloc] initWithFormat:@"%@\n\n",command]; int result = SDLNet_TCP_Send(self.ssd, [message UTF8String], [message lengthOfBytesUsingEncoding:NSUTF8StringEncoding]); - [message release]; return result; } -(int) sendToServer:(NSString *)command withArgument:(NSString *)argument { NSString *message = [[NSString alloc] initWithFormat:@"%@\n%@\n\n",command,argument]; int result = SDLNet_TCP_Send(self.ssd, [message UTF8String], [message lengthOfBytesUsingEncoding:NSUTF8StringEncoding]); - [message release]; return result; } --(void) serverProtocol { +- (void)serverProtocol { @autoreleasepool { IPaddress ip; @@ -143,7 +139,6 @@ NSString *bufferedMessage = [[NSString alloc] initWithBytes:buffer length:index-2 encoding:NSASCIIStringEncoding]; NSArray *listOfCommands = [bufferedMessage componentsSeparatedByString:@"\n"]; - [bufferedMessage release]; NSString *command = [listOfCommands objectAtIndex:0]; DLog(@"size = %d, %@", index-2, listOfCommands); if ([command isEqualToString:@"PING"]) { diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SettingsBaseViewController.h --- a/project_files/HedgewarsMobile/Classes/SettingsBaseViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SettingsBaseViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -26,10 +26,10 @@ UITabBarController *tabController; } -@property (nonatomic, retain) UIViewController *targetController; -@property (nonatomic, retain) NSArray *controllerNames; -@property (nonatomic, retain) NSIndexPath *lastIndexPath; +@property (nonatomic, strong) UIViewController *targetController; +@property (nonatomic, strong) NSArray *controllerNames; +@property (nonatomic, strong) NSIndexPath *lastIndexPath; --(void) dismissSplitView; +- (void)dismissSplitView; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SettingsBaseViewController.m --- a/project_files/HedgewarsMobile/Classes/SettingsBaseViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SettingsBaseViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -28,13 +28,13 @@ @implementation SettingsBaseViewController @synthesize targetController, controllerNames, lastIndexPath; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { // the list of available controllers NSArray *array = [[NSArray alloc] initWithObjects:NSLocalizedString(@"General",@""), NSLocalizedString(@"Teams",@""), @@ -43,7 +43,6 @@ NSLocalizedString(@"Support",@""), nil]; self.controllerNames = array; - [array release]; if (IS_IPAD()) { @@ -57,7 +56,6 @@ [tableView reloadData]; [self.view addSubview:tableView]; [self tableView:tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; - [tableView release]; self.navigationItem.leftBarButtonItem = [self doneButton]; } } @@ -71,23 +69,24 @@ - (UIBarButtonItem *)doneButton { - return [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone + return [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self - action:@selector(dismissSplitView)] autorelease]; + action:@selector(dismissSplitView)]; } --(void) dismissSplitView { +- (void)dismissSplitView { [[AudioManagerController mainManager] playBackSound]; - [[[HedgewarsAppDelegate sharedAppDelegate] mainViewController] dismissViewControllerAnimated:YES completion:nil]; + UIViewController *vc = [[HedgewarsAppDelegate sharedAppDelegate] mainViewController]; + [vc dismissViewControllerAnimated:YES completion:nil]; } #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.controllerNames count]; } @@ -97,7 +96,7 @@ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; NSString *iconStr = nil; switch ([indexPath row]) { @@ -125,14 +124,13 @@ cell.textLabel.text = [controllerNames objectAtIndex:[indexPath row]]; UIImage *icon = [[UIImage alloc] initWithContentsOfFile:iconStr]; cell.imageView.image = icon; - [icon release]; return cell; } #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger newRow = [indexPath row]; NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; @@ -168,7 +166,6 @@ nextController.navigationItem.hidesBackButton = YES; [nextController viewWillAppear:NO]; [targetController.navigationController pushViewController:nextController animated:NO]; - [nextController release]; [[AudioManagerController mainManager] playClickSound]; } @@ -177,28 +174,12 @@ #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning + +- (void)didReceiveMemoryWarning { MSG_MEMCLEAN(); [super didReceiveMemoryWarning]; } --(void) viewDidUnload -{ - self.controllerNames = nil; - self.lastIndexPath = nil; - self.targetController = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc -{ - releaseAndNil(targetController); - releaseAndNil(controllerNames); - releaseAndNil(lastIndexPath); - [super dealloc]; -} - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SingleSchemeViewController.m --- a/project_files/HedgewarsMobile/Classes/SingleSchemeViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SingleSchemeViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -29,52 +29,47 @@ @implementation SingleSchemeViewController @synthesize schemeName, schemeDictionary, basicSettingList, gameModifierArray; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; // title, description, image name (+btn) NSArray *mods = [[NSArray alloc] initWithContentsOfFile:GAMEMODS_FILE()]; self.gameModifierArray = mods; - [mods release]; // title, image name (+icon), default value, max value, min value NSArray *basicSettings = [[NSArray alloc] initWithContentsOfFile:BASICFLAGS_FILE()]; self.basicSettingList = basicSettings; - [basicSettings release]; self.title = NSLocalizedString(@"Edit scheme preferences",@""); } // load from file --(void) viewWillAppear:(BOOL) animated { +- (void)viewWillAppear:(BOOL) animated { [super viewWillAppear:animated]; NSString *schemeFile = [[NSString alloc] initWithFormat:@"%@/%@.plist",SCHEMES_DIRECTORY(),self.schemeName]; NSMutableDictionary *scheme = [[NSMutableDictionary alloc] initWithContentsOfFile:schemeFile]; - [schemeFile release]; self.schemeDictionary = scheme; - [scheme release]; [self.tableView reloadData]; } // save to file --(void) viewWillDisappear:(BOOL) animated { +- (void)viewWillDisappear:(BOOL) animated { [super viewWillDisappear:animated]; NSString *schemeFile = [[NSString alloc] initWithFormat:@"%@/%@.plist",SCHEMES_DIRECTORY(),self.schemeName]; [self.schemeDictionary writeToFile:schemeFile atomically:YES]; - [schemeFile release]; } // force a redraw of the game mod section to reposition the slider --(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { if (IS_IPAD() == NO) return; [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade]; @@ -83,7 +78,7 @@ #pragma mark - #pragma mark editableCellView delegate // set the new value --(void) saveTextFieldValue:(NSString *)textString withTag:(NSInteger) tagValue { +- (void)saveTextFieldValue:(NSString *)textString withTag:(NSInteger)tagValue { if (tagValue == 0) { // delete old file [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@/%@.plist",SCHEMES_DIRECTORY(),self.schemeName] error:NULL]; @@ -98,11 +93,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 3; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { switch (section) { case 0: return 2; @@ -128,11 +123,11 @@ NSInteger row = [indexPath row]; switch ([indexPath section]) { - case 0: + case 0: { editableCell = (EditableCellView *)[aTableView dequeueReusableCellWithIdentifier:CellIdentifier0]; if (editableCell == nil) { - editableCell = [[[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault - reuseIdentifier:CellIdentifier0] autorelease]; + editableCell = [[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault + reuseIdentifier:CellIdentifier0]; editableCell.delegate = self; } editableCell.tag = row; @@ -151,31 +146,29 @@ } cell = editableCell; break; - case 1: + } + case 1: { cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier1]; NSDictionary *detail = [self.basicSettingList objectAtIndex:row]; // need to offset this section (see format in CommodityFunctions.m and above) if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 - reuseIdentifier:CellIdentifier1] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 + reuseIdentifier:CellIdentifier1]; UISlider *slider = [[UISlider alloc] init]; [slider addTarget:self action:@selector(sliderChanged:) forControlEvents:UIControlEventValueChanged]; [cell.contentView addSubview:slider]; - [slider release]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 7, 200, 30)]; label.tag = LABEL_TAG; label.backgroundColor = [UIColor clearColor]; label.font = [UIFont boldSystemFontOfSize:[UIFont labelFontSize]]; [cell.contentView addSubview:label]; - [label release]; } UIImage *img = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/icon%@.png",ICONS_DIRECTORY(), [[self.basicSettingList objectAtIndex:row] objectForKey:@"image"]]]; cell.imageView.image = img; - [img release]; UILabel *cellLabel = (UILabel *)[cell.contentView viewWithTag:LABEL_TAG]; NSString *basicSettingTitleKey = [[self.basicSettingList objectAtIndex:row] objectForKey:@"title"]; @@ -218,15 +211,15 @@ cell.selectionStyle = UITableViewCellSelectionStyleBlue; break; - case 2: + } + case 2: { cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier2]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle - reuseIdentifier:CellIdentifier2] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle + reuseIdentifier:CellIdentifier2]; UISwitch *onOff = [[UISwitch alloc] init]; [onOff addTarget:self action:@selector(toggleSwitch:) forControlEvents:UIControlEventValueChanged]; cell.accessoryView = onOff; - [onOff release]; } UISwitch *switcher = (UISwitch *)cell.accessoryView; @@ -236,7 +229,6 @@ UIImage *image = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/btn%@.png",ICONS_DIRECTORY(), [[self.gameModifierArray objectAtIndex:row] objectForKey:@"image"]]]; cell.imageView.image = image; - [image release]; cell.imageView.layer.cornerRadius = 6.0f; cell.imageView.layer.masksToBounds = YES; NSString *gameModTitleKey = [[self.gameModifierArray objectAtIndex:row] objectForKey:@"title"]; @@ -248,17 +240,18 @@ cell.selectionStyle = UITableViewCellSelectionStyleNone; } + } return cell; } --(void) toggleSwitch:(id) sender { +- (void)toggleSwitch:(id)sender { UISwitch *theSwitch = (UISwitch *)sender; NSMutableArray *array = [self.schemeDictionary objectForKey:@"gamemod"]; [array replaceObjectAtIndex:theSwitch.tag-SWITCH_TAG withObject:[NSNumber numberWithBool:theSwitch.on]]; } --(void) sliderChanged:(id) sender { +- (void)sliderChanged:(id)sender { // the slider that changed is sent as object UISlider *theSlider = (UISlider *)sender; // create the indexPath of the row of the slider @@ -279,7 +272,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [aTableView cellForRowAtIndexPath:indexPath]; EditableCellView *editableCell = nil; UISlider *cellSlider = nil; @@ -373,27 +366,11 @@ #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; self.basicSettingList = nil; self.gameModifierArray = nil; } --(void) viewDidUnload { - self.schemeName = nil; - self.schemeDictionary = nil; - self.basicSettingList = nil; - self.gameModifierArray = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc { - releaseAndNil(schemeName); - releaseAndNil(schemeDictionary); - releaseAndNil(basicSettingList); - releaseAndNil(gameModifierArray); - [super dealloc]; -} - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SingleTeamViewController.h --- a/project_files/HedgewarsMobile/Classes/SingleTeamViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SingleTeamViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -36,7 +36,7 @@ @property (nonatomic,retain) NSArray *secondaryItems; @property (nonatomic,retain) NSArray *moreSecondaryItems; --(void) writeFile; --(void) setWriteNeeded; +- (void)writeFile; +- (void)setWriteNeeded; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SingleTeamViewController.m --- a/project_files/HedgewarsMobile/Classes/SingleTeamViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SingleTeamViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -32,14 +32,14 @@ @implementation SingleTeamViewController @synthesize teamDictionary, normalHogSprite, secondaryItems, moreSecondaryItems, teamName; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark editableCellViewDelegate methods // set the new value --(void) saveTextFieldValue:(NSString *)textString withTag:(NSInteger) tagValue { +- (void)saveTextFieldValue:(NSString *)textString withTag:(NSInteger)tagValue { if (TEAMNAME_TAG == tagValue) { // delete old file [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@/%@.plist",TEAMS_DIRECTORY(),self.teamName] error:NULL]; @@ -57,7 +57,7 @@ #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; // labels for the entries @@ -68,7 +68,6 @@ NSLocalizedString(@"Flag",@""), NSLocalizedString(@"Level",@""),nil]; self.secondaryItems = array; - [array release]; // labels for the subtitles NSArray *moreArray = [[NSArray alloc] initWithObjects: @@ -78,14 +77,11 @@ NSLocalizedString(@"Choose a charismatic symbol for your team",@""), NSLocalizedString(@"Opt for controlling the team or let the AI lead",@""),nil]; self.moreSecondaryItems = moreArray; - [moreArray release]; // load the base hog image, drawing will occure in cellForRow... NSString *normalHogFile = [[NSString alloc] initWithFormat:@"%@/basehat-hedgehog.png",[[NSBundle mainBundle] resourcePath]]; UIImage *hogSprite = [[UIImage alloc] initWithContentsOfFile:normalHogFile]; - [normalHogFile release]; self.normalHogSprite = hogSprite; - [hogSprite release]; // listen if any childController modifies the plist and write it if needed [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setWriteNeeded) name:@"setWriteNeedTeams" object:nil]; @@ -94,7 +90,7 @@ self.title = NSLocalizedString(@"Edit team settings",@""); } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // load data about the team and write if there has been a change from other childControllers @@ -104,14 +100,12 @@ NSString *teamFile = [[NSString alloc] initWithFormat:@"%@/%@.plist",TEAMS_DIRECTORY(),self.teamName]; NSMutableDictionary *teamDict = [[NSMutableDictionary alloc] initWithContentsOfFile:teamFile]; self.teamDictionary = teamDict; - [teamDict release]; - [teamFile release]; [self.tableView reloadData]; } // write on file if there has been a change --(void) viewWillDisappear:(BOOL)animated { +- (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; if (isWriteNeeded) @@ -120,14 +114,13 @@ #pragma mark - // needed by other classes to warn about a user change --(void) setWriteNeeded { +- (void)setWriteNeeded { isWriteNeeded = YES; } --(void) writeFile { +- (void)writeFile { NSString *teamFile = [[NSString alloc] initWithFormat:@"%@/%@.plist",TEAMS_DIRECTORY(),self.teamName]; [self.teamDictionary writeToFile:teamFile atomically:YES]; - [teamFile release]; //DLog(@"%@",teamDictionary); isWriteNeeded = NO; @@ -135,11 +128,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 3; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { NSInteger rows = 0; switch (section) { case 0: // team name @@ -189,11 +182,11 @@ UIImage *accessoryImage; switch ([indexPath section]) { - case 0: + case 0: { editableCell = (EditableCellView *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier0]; if (editableCell == nil) { - editableCell = [[[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault - reuseIdentifier:CellIdentifier0] autorelease]; + editableCell = [[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault + reuseIdentifier:CellIdentifier0]; editableCell.delegate = self; editableCell.tag = TEAMNAME_TAG; } @@ -204,14 +197,15 @@ cell = editableCell; break; - case 1: + } + case 1: { if ([indexPath row] == HW_getMaxNumberOfHogs()) { cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierDefault]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault - reuseIdentifier:CellIdentifierDefault] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault + reuseIdentifier:CellIdentifierDefault]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; } @@ -222,8 +216,8 @@ editableCell = (EditableCellView *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier1]; if (editableCell == nil) { - editableCell = [[[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault - reuseIdentifier:CellIdentifier1] autorelease]; + editableCell = [[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault + reuseIdentifier:CellIdentifier1]; editableCell.delegate = self; } editableCell.tag = [indexPath row]; @@ -233,20 +227,19 @@ // draw the hat on top of the hog NSString *hatFile = [[NSString alloc] initWithFormat:@"%@/%@.png", HATS_DIRECTORY(), [[hogArray objectAtIndex:row] objectForKey:@"hat"]]; UIImage *hatSprite = [[UIImage alloc] initWithContentsOfFile: hatFile andCutAt:CGRectMake(0, 0, 32, 32)]; - [hatFile release]; editableCell.imageView.image = [self.normalHogSprite mergeWith:hatSprite atPoint:CGPointMake(0, 5)]; - [hatSprite release]; editableCell.textField.text = [[hogArray objectAtIndex:row] objectForKey:@"hogname"]; editableCell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; cell = editableCell; break; - case 2: + } + case 2: { cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle - reuseIdentifier:CellIdentifier2] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle + reuseIdentifier:CellIdentifier2]; } cell.textLabel.text = [self.secondaryItems objectAtIndex:row]; @@ -258,25 +251,21 @@ GRAVES_DIRECTORY(),[teamDictionary objectForKey:@"grave"]] andCutAt:CGRectMake(0,0,32,32)]; cell.imageView.image = accessoryImage; - [accessoryImage release]; break; case 1: // voice accessoryImage = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/HellishBomb.png", GRAPHICS_DIRECTORY()]]; cell.imageView.image = accessoryImage; - [accessoryImage release]; break; case 2: // fort accessoryImage = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/%@-icon.png", FORTS_DIRECTORY(),[teamDictionary objectForKey:@"fort"]]]; cell.imageView.image = accessoryImage; - [accessoryImage release]; break; case 3: // flags accessoryImage = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.png", FLAGS_DIRECTORY(),[teamDictionary objectForKey:@"flag"]]]; cell.imageView.image = [accessoryImage scaleToSize:CGSizeMake(26, 18)]; - [accessoryImage release]; cell.imageView.layer.borderWidth = 1; cell.imageView.layer.borderColor = [[UIColor blackColor] CGColor]; break; @@ -287,13 +276,13 @@ objectAtIndex:0] objectForKey:@"level"] intValue]]]; cell.imageView.image = accessoryImage; - [accessoryImage release]; break; default: cell.imageView.image = nil; break; } break; + } } return cell; @@ -302,7 +291,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger row = [indexPath row]; NSInteger section = [indexPath section]; @@ -316,7 +305,6 @@ [gravesViewController setTeamDictionary:teamDictionary]; [self.navigationController pushViewController:gravesViewController animated:YES]; - [gravesViewController release]; break; } case 1: // voice @@ -325,7 +313,6 @@ [voicesViewController setTeamDictionary:teamDictionary]; [self.navigationController pushViewController:voicesViewController animated:YES]; - [voicesViewController release]; break; } case 2: // fort @@ -334,7 +321,6 @@ [fortsViewController setTeamDictionary:teamDictionary]; [self.navigationController pushViewController:fortsViewController animated:YES]; - [fortsViewController release]; break; } case 3: // flag @@ -343,7 +329,6 @@ [flagsViewController setTeamDictionary:teamDictionary]; [self.navigationController pushViewController:flagsViewController animated:YES]; - [flagsViewController release]; break; } case 4: // level @@ -352,7 +337,6 @@ [levelViewController setTeamDictionary:teamDictionary]; [self.navigationController pushViewController:levelViewController animated:YES]; - [levelViewController release]; break; } default: @@ -373,7 +357,7 @@ } // action to perform when you want to change a hog hat --(void) tableView:(UITableView *)aTableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { // if we are editing the field undo any change before proceeding EditableCellView *cell = (EditableCellView *)[aTableView cellForRowAtIndexPath:indexPath]; [cell cancel:nil]; @@ -390,37 +374,15 @@ hogHatViewController.selectedHog = hogIndex; [self.navigationController pushViewController:hogHatViewController animated:YES]; - [hogHatViewController release]; } #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; MSG_MEMCLEAN(); } --(void) viewDidUnload { - self.teamDictionary = nil; - self.teamName = nil; - self.normalHogSprite = nil; - self.secondaryItems = nil; - self.moreSecondaryItems = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc -{ - [[NSNotificationCenter defaultCenter] removeObserver:self]; - releaseAndNil(teamDictionary); - releaseAndNil(teamName); - releaseAndNil(normalHogSprite); - releaseAndNil(secondaryItems); - releaseAndNil(moreSecondaryItems); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SingleWeaponViewController.h --- a/project_files/HedgewarsMobile/Classes/SingleWeaponViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SingleWeaponViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -37,6 +37,6 @@ @property (nonatomic,retain) NSString *description; @property (nonatomic,retain) UIImage *ammoStoreImage; --(void) saveAmmos; +- (void)saveAmmos; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SingleWeaponViewController.m --- a/project_files/HedgewarsMobile/Classes/SingleWeaponViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SingleWeaponViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -20,20 +20,20 @@ #import "SingleWeaponViewController.h" @interface SingleWeaponViewController () -@property (nonatomic, retain) NSString *trPath; -@property (nonatomic, retain) NSString *trFileName; +@property (nonatomic, strong) NSString *trPath; +@property (nonatomic, strong) NSString *trFileName; @end @implementation SingleWeaponViewController @synthesize weaponName, description, ammoStoreImage; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; self.trPath = [NSString stringWithFormat:@"%@", LOCALE_DIRECTORY()]; @@ -49,24 +49,21 @@ NSString *str = [NSString stringWithFormat:@"%@/AmmoMenu/Ammos_base.png", GRAPHICS_DIRECTORY()]; UIImage *img = [[UIImage alloc] initWithContentsOfFile:str]; self.ammoStoreImage = img; - [img release]; self.title = NSLocalizedString(@"Edit weapons preferences",@""); } --(void) viewWillAppear:(BOOL) animated { +- (void)viewWillAppear:(BOOL) animated { [super viewWillAppear:animated]; NSString *ammoFile = [[NSString alloc] initWithFormat:@"%@/%@.plist",WEAPONS_DIRECTORY(),self.weaponName]; NSDictionary *weapon = [[NSDictionary alloc] initWithContentsOfFile:ammoFile]; - [ammoFile release]; self.description = [weapon objectForKey:@"description"]; const char *tmp1 = [[weapon objectForKey:@"ammostore_initialqt"] UTF8String]; const char *tmp2 = [[weapon objectForKey:@"ammostore_probability"] UTF8String]; const char *tmp3 = [[weapon objectForKey:@"ammostore_delay"] UTF8String]; const char *tmp4 = [[weapon objectForKey:@"ammostore_crate"] UTF8String]; - [weapon release]; // if the new weaponset is diffrent from the older we need to update it replacing // the missing ammos with 0 quantity @@ -87,12 +84,12 @@ [self.tableView reloadData]; } --(void) viewWillDisappear:(BOOL) animated { +- (void)viewWillDisappear:(BOOL) animated { [super viewWillDisappear:animated]; [self saveAmmos]; } --(void) saveAmmos { +- (void)saveAmmos { quantity[HW_getNumberOfWeapons()] = '\0'; probability[HW_getNumberOfWeapons()] = '\0'; delay[HW_getNumberOfWeapons()] = '\0'; @@ -113,17 +110,15 @@ NSString *ammoFile = [[NSString alloc] initWithFormat:@"%@/%@.plist",WEAPONS_DIRECTORY(),self.weaponName]; [weapon writeToFile:ammoFile atomically:YES]; - [ammoFile release]; - [weapon release]; } #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 2; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (section == 0) return 2; else @@ -140,8 +135,8 @@ if (0 == [indexPath section]) { EditableCellView *editableCell = (EditableCellView *)[aTableView dequeueReusableCellWithIdentifier:CellIdentifier0]; if (editableCell == nil) { - editableCell = [[[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault - reuseIdentifier:CellIdentifier0] autorelease]; + editableCell = [[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault + reuseIdentifier:CellIdentifier0]; editableCell.delegate = self; } editableCell.tag = row; @@ -162,7 +157,7 @@ } else { WeaponCellView *weaponCell = (WeaponCellView *)[aTableView dequeueReusableCellWithIdentifier:CellIdentifier1]; if (weaponCell == nil) { - weaponCell = [[[WeaponCellView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1] autorelease]; + weaponCell = [[WeaponCellView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1]; weaponCell.delegate = self; } @@ -213,7 +208,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if (0 == [indexPath section]) { EditableCellView *editableCell = (EditableCellView *)[aTableView cellForRowAtIndexPath:indexPath]; [editableCell replyKeyboard]; @@ -223,7 +218,7 @@ #pragma mark - #pragma mark editableCellView delegate // set the new value --(void) saveTextFieldValue:(NSString *)textString withTag:(NSInteger) tagValue { +- (void)saveTextFieldValue:(NSString *)textString withTag:(NSInteger)tagValue { if (tagValue == 0) { // delete old file [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@/%@.plist",WEAPONS_DIRECTORY(),self.weaponName] error:NULL]; @@ -238,7 +233,7 @@ #pragma mark - #pragma mark WeaponButtonControllerDelegate --(void) updateValues:(NSArray *)withArray atIndex:(NSInteger) index { +- (void)updateValues:(NSArray *)withArray atIndex:(NSInteger)index { quantity[index] = [[NSString stringWithFormat:@"%d",[[withArray objectAtIndex:0] intValue]] characterAtIndex:0]; probability[index] = [[NSString stringWithFormat:@"%d",[[withArray objectAtIndex:1] intValue]] characterAtIndex:0]; delay[index] = [[NSString stringWithFormat:@"%d",[[withArray objectAtIndex:2] intValue]] characterAtIndex:0]; @@ -247,34 +242,13 @@ #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; -} --(void) viewDidUnload { +- (void)dealloc { free(quantity); quantity = NULL; free(probability); probability = NULL; free(delay); delay = NULL; free(crateness); crateness = NULL; - [super viewDidUnload]; - self.description = nil; - self.weaponName = nil; - self.ammoStoreImage = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; } - --(void) dealloc { - releaseAndNil(_trPath); - releaseAndNil(_trFileName); - - releaseAndNil(weaponName); - releaseAndNil(description); - releaseAndNil(ammoStoreImage); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SquareButtonView.h --- a/project_files/HedgewarsMobile/Classes/SquareButtonView.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SquareButtonView.h Sat Dec 30 01:22:11 2017 +0100 @@ -27,12 +27,12 @@ NSArray *colorArray; } -@property (nonatomic,retain) NSMutableDictionary *ownerDictionary; -@property (nonatomic,retain) NSArray *colorArray; -@property (nonatomic,assign) NSUInteger selectedColor; -@property (nonatomic,assign) NSUInteger colorIndex; +@property (nonatomic, strong) NSMutableDictionary *ownerDictionary; +@property (nonatomic, strong) NSArray *colorArray; +@property (assign) NSUInteger selectedColor; +@property (assign) NSUInteger colorIndex; --(void) nextColor; --(void) selectColor:(NSUInteger) color; +- (void)nextColor; +- (void)selectColor:(NSUInteger) color; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SquareButtonView.m --- a/project_files/HedgewarsMobile/Classes/SquareButtonView.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SquareButtonView.m Sat Dec 30 01:22:11 2017 +0100 @@ -24,7 +24,7 @@ @implementation SquareButtonView @synthesize ownerDictionary, colorIndex, selectedColor, colorArray; --(id) initWithFrame:(CGRect)frame { +- (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { self.colorIndex = 0; self.selectedColor = 0; @@ -46,7 +46,7 @@ return self; } --(void) nextColor { +- (void)nextColor { self.colorIndex++; if (self.colorIndex >= [self.colorArray count]) @@ -58,7 +58,7 @@ [self selectColor:color]; } --(void) selectColor:(NSUInteger) color { +- (void)selectColor:(NSUInteger) color { if (color != self.selectedColor) { self.selectedColor = color; self.colorIndex = [self.colorArray indexOfObject:[NSNumber numberWithUnsignedInteger:color]]; @@ -70,11 +70,6 @@ } } --(void) dealloc { - releaseAndNil(ownerDictionary); - releaseAndNil(colorArray); - [super dealloc]; -} @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/StatsPageViewController.h --- a/project_files/HedgewarsMobile/Classes/StatsPageViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/StatsPageViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -24,6 +24,6 @@ NSArray *statsArray; } -@property (nonatomic,retain) NSArray *statsArray; +@property (nonatomic, strong) NSArray *statsArray; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/StatsPageViewController.m --- a/project_files/HedgewarsMobile/Classes/StatsPageViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/StatsPageViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -23,11 +23,11 @@ @implementation StatsPageViewController @synthesize statsArray; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } --(void) viewDidLoad { +- (void)viewDidLoad { UITableView *aTableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped]; aTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [aTableView setBackgroundColorForAnyTable:[UIColor clearColor]]; @@ -35,11 +35,9 @@ NSString *imgName = (IS_IPAD()) ? @"mediumBackground~ipad.png" : @"smallerBackground~iphone.png"; UIImage *img = [[UIImage alloc] initWithContentsOfFile:imgName]; UIImageView *background = [[UIImageView alloc] initWithImage:img]; - [img release]; background.frame = self.view.frame; background.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [self.view insertSubview:background atIndex:0]; - [background release]; aTableView.separatorColor = [UIColor darkYellowColor]; aTableView.separatorStyle = UITableViewCellSeparatorStyleNone; @@ -49,7 +47,6 @@ aTableView.rowHeight = 44; [self.view addSubview:aTableView]; - [aTableView release]; [super viewDidLoad]; } @@ -70,11 +67,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 3; } --(NSInteger) tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section { if (section == 0) return 1; else if (section == 1) @@ -92,7 +89,7 @@ UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier0]; if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier0] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier0]; if (section == 0) { // winning team imgName = @"star"; @@ -117,12 +114,9 @@ NSString *imgString = [[NSString alloc] initWithFormat:@"%@/%@.png",imgPath,imgName]; UIImage *img = [[UIImage alloc] initWithContentsOfFile:imgString]; - [imgString release]; UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; cell.imageView.image = img; - [img release]; cell.accessoryView = imgView; - [imgView release]; cell.textLabel.textAlignment = NSTextAlignmentCenter; cell.textLabel.adjustsFontSizeToFitWidth = YES; @@ -143,13 +137,11 @@ UIImage *img = [[UIImage alloc] initWithContentsOfFile:@"smallerTitle.png"]; UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; - [img release]; imgView.center = CGPointMake(aTableView.frame.size.width/2, 160/2); imgView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; [header addSubview:imgView]; - [imgView release]; - return [header autorelease]; + return header; } else return nil; } @@ -168,32 +160,27 @@ button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; [button addTarget:self action:@selector(dismissView) forControlEvents:UIControlEventTouchUpInside]; [footer addSubview:button]; - [button release]; - return [footer autorelease]; + return footer; } else return nil; } #pragma mark - #pragma mark button delegate --(void) dismissView { +- (void)dismissView { [[AudioManagerController mainManager] playClickSound]; [self dismissViewControllerAnimated:YES completion:nil]; } #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { +- (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; self.statsArray = nil; } --(void) dealloc { - releaseAndNil(statsArray); - [super dealloc]; -} @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SupportViewController.h --- a/project_files/HedgewarsMobile/Classes/SupportViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SupportViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -24,6 +24,6 @@ NSArray *waysToSupport; } -@property (nonatomic, retain) NSArray *waysToSupport; +@property (nonatomic, strong) NSArray *waysToSupport; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/SupportViewController.m --- a/project_files/HedgewarsMobile/Classes/SupportViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/SupportViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -23,13 +23,13 @@ @implementation SupportViewController @synthesize waysToSupport; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; NSArray *array = [[NSArray alloc] initWithObjects: @@ -40,7 +40,6 @@ NSLocalizedString(@"Chat with the devs in IRC",@""), nil]; self.waysToSupport = array; - [array release]; self.navigationItem.title = @"♥"; self.tableView.rowHeight = 50; @@ -67,7 +66,7 @@ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; NSString *rowString = [self.waysToSupport objectAtIndex:(row + section)]; cell.textLabel.text = rowString; @@ -100,21 +99,18 @@ NSString *imgString = [[NSString alloc] initWithFormat:@"%@/%@.png",[[NSBundle mainBundle] resourcePath],imgName]; UIImage *img = [[UIImage alloc] initWithContentsOfFile:imgString]; - [imgString release]; cell.imageView.image = img; if (section == 0) { UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; cell.accessoryView = imgView; - [imgView release]; } - [img release]; return cell; } #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if ([indexPath section] == 0) { @@ -145,18 +141,16 @@ } } --(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger) section { +-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { if (section == 1) { UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 240)]; footer.autoresizingMask = UIViewAutoresizingFlexibleWidth; UIImage *img = [[UIImage alloc] initWithContentsOfFile:@"surprise.png"]; UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; - [img release]; imgView.center = CGPointMake(self.tableView.frame.size.width/2, 120); imgView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; [footer addSubview:imgView]; - [imgView release]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 20)]; label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; @@ -165,9 +159,8 @@ label.backgroundColor = [UIColor clearColor]; label.center = CGPointMake(self.tableView.frame.size.width/2, 250); [footer addSubview:label]; - [label release]; - return [footer autorelease]; + return footer; } else return nil; } @@ -179,19 +172,10 @@ #pragma mark - #pragma mark Memory management + -(void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; -} - --(void) viewDidUnload { - self.waysToSupport = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc { - releaseAndNil(waysToSupport); - [super dealloc]; + MSG_MEMCLEAN(); } @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/TableViewControllerWithDoneButton.m --- a/project_files/HedgewarsMobile/Classes/TableViewControllerWithDoneButton.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/TableViewControllerWithDoneButton.m Sat Dec 30 01:22:11 2017 +0100 @@ -38,15 +38,16 @@ - (UIBarButtonItem *)doneButton { - return [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone + return [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self - action:@selector(dismissView)] autorelease]; + action:@selector(dismissView)]; } - (void)dismissView { [[AudioManagerController mainManager] playBackSound]; - [[[HedgewarsAppDelegate sharedAppDelegate] mainViewController] dismissViewControllerAnimated:YES completion:nil]; + UIViewController *vc = [[HedgewarsAppDelegate sharedAppDelegate] mainViewController]; + [vc dismissViewControllerAnimated:YES completion:nil]; } @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/TeamConfigViewController.h --- a/project_files/HedgewarsMobile/Classes/TeamConfigViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/TeamConfigViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -32,11 +32,11 @@ NSArray *cachedContentsOfDir; } -@property (nonatomic,retain) UITableView *tableView; -@property (nonatomic,assign) NSInteger selectedTeamsCount; -@property (nonatomic,assign) NSInteger allTeamsCount; -@property (nonatomic,retain) NSMutableArray *listOfAllTeams; -@property (nonatomic,retain) NSMutableArray *listOfSelectedTeams; -@property (nonatomic,retain) NSArray *cachedContentsOfDir; +@property (nonatomic, strong) UITableView *tableView; +@property (assign) NSInteger selectedTeamsCount; +@property (assign) NSInteger allTeamsCount; +@property (nonatomic, strong) NSMutableArray *listOfAllTeams; +@property (nonatomic, strong) NSMutableArray *listOfSelectedTeams; +@property (nonatomic, strong) NSArray *cachedContentsOfDir; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/TeamConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -25,13 +25,13 @@ @implementation TeamConfigViewController @synthesize tableView, selectedTeamsCount, allTeamsCount, listOfAllTeams, listOfSelectedTeams, cachedContentsOfDir; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { UITableView *aTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStyleGrouped]; aTableView.delegate = self; @@ -47,9 +47,7 @@ UIImageView *background = [[UIImageView alloc] initWithImage:backgroundImage]; background.contentMode = UIViewContentModeScaleAspectFill; background.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - [backgroundImage release]; [self.view addSubview:background]; - [background release]; [aTableView setBackgroundColorForAnyTable:[UIColor clearColor]]; } @@ -58,13 +56,12 @@ aTableView.separatorStyle = UITableViewCellSeparatorStyleNone; aTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; self.tableView = aTableView; - [aTableView release]; [self.view addSubview:self.tableView]; [super viewDidLoad]; } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { NSArray *contentsOfDir = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:TEAMS_DIRECTORY() error:NULL]; if ([self.cachedContentsOfDir isEqualToArray:contentsOfDir] == NO) { self.cachedContentsOfDir = contentsOfDir; @@ -76,14 +73,11 @@ [NSNumber numberWithInt:4],@"number", [colors objectAtIndex:i%[colors count]],@"color",nil]; [array addObject:dict]; - [dict release]; } self.listOfAllTeams = array; - [array release]; NSMutableArray *emptyArray = [[NSMutableArray alloc] initWithObjects:nil]; self.listOfSelectedTeams = emptyArray; - [emptyArray release]; self.selectedTeamsCount = [self.listOfSelectedTeams count]; self.allTeamsCount = [self.listOfAllTeams count]; @@ -93,7 +87,7 @@ [super viewWillAppear:animated]; } --(NSInteger) filterNumberOfHogs:(NSInteger) hogs { +- (NSInteger)filterNumberOfHogs:(NSInteger)hogs { NSInteger numberOfHogs; if (hogs <= HW_getMaxNumberOfHogs() && hogs >= 1) numberOfHogs = hogs; @@ -108,11 +102,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 2; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return (section == 0 ? self.selectedTeamsCount : self.allTeamsCount); } @@ -126,11 +120,10 @@ if (section == 0) { cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier0]; if (cell == nil) { - cell = [[[HoldTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier0] autorelease]; + cell = [[HoldTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier0]; SquareButtonView *squareButton = [[SquareButtonView alloc] initWithFrame:CGRectMake(0, 0, 36, 36)]; cell.accessoryView = squareButton; - [squareButton release]; } NSMutableDictionary *selectedRow = [listOfSelectedTeams objectAtIndex:[indexPath row]]; @@ -148,7 +141,7 @@ } else { cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier1]; if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1]; cell.textLabel.text = [[[self.listOfAllTeams objectAtIndex:[indexPath row]] objectForKey:@"team"] stringByDeletingPathExtension]; cell.textLabel.backgroundColor = [UIColor clearColor]; @@ -158,12 +151,9 @@ if ([[firstHog objectForKey:@"level"] intValue] != 0) { NSString *imgString = [[NSString alloc] initWithFormat:@"%@/robotBadge.png",[[NSBundle mainBundle] resourcePath]]; UIImage *sprite = [[UIImage alloc] initWithContentsOfFile:imgString]; - [imgString release]; UIImageView *spriteView = [[UIImageView alloc] initWithImage:sprite]; - [sprite release]; cell.accessoryView = spriteView; - [spriteView release]; } else cell.accessoryView = nil; } @@ -189,15 +179,14 @@ UIView *theView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, aTableView.frame.size.width, 30)]; theView.autoresizingMask = UIViewAutoresizingFlexibleWidth; [theView addSubview:theLabel]; - [theLabel release]; - return [theView autorelease]; + return theView; } -(CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return IS_IPAD() ? 40 : 30; } --(UIView *)tableView:(UITableView *)aTableView viewForFooterInSection:(NSInteger) section { +-(UIView *)tableView:(UITableView *)aTableView viewForFooterInSection:(NSInteger)section { NSInteger height = IS_IPAD() ? 40 : 30; UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, aTableView.frame.size.width, height)]; footer.backgroundColor = [UIColor clearColor]; @@ -218,14 +207,13 @@ label.text = NSLocalizedString(@"The robot badge indicates an AI-controlled team.",@""); [footer addSubview:label]; - [label release]; - return [footer autorelease]; + return footer; } #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSUInteger row = [indexPath row]; NSUInteger section = [indexPath section]; @@ -255,7 +243,7 @@ } } --(void) holdAction:(NSString *)content onTable:(UITableView *)aTableView { +- (void)holdAction:(NSString *)content onTable:(UITableView *)aTableView { NSUInteger row; for (row = 0; row < [self.listOfSelectedTeams count]; row++) { NSDictionary *dict = [self.listOfSelectedTeams objectAtIndex:row]; @@ -276,30 +264,12 @@ #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { self.cachedContentsOfDir = nil; MSG_MEMCLEAN(); [super didReceiveMemoryWarning]; } --(void) viewDidUnload { - self.tableView = nil; - self.listOfAllTeams = nil; - self.listOfSelectedTeams = nil; - self.cachedContentsOfDir = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - - --(void) dealloc { - releaseAndNil(tableView); - releaseAndNil(listOfAllTeams); - releaseAndNil(listOfSelectedTeams); - releaseAndNil(cachedContentsOfDir); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/TeamSettingsViewController.h --- a/project_files/HedgewarsMobile/Classes/TeamSettingsViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/TeamSettingsViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -24,6 +24,6 @@ NSMutableArray *listOfTeams; } -@property (nonatomic, retain) NSMutableArray *listOfTeams; +@property (nonatomic, strong) NSMutableArray *listOfTeams; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/TeamSettingsViewController.m --- a/project_files/HedgewarsMobile/Classes/TeamSettingsViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/TeamSettingsViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -24,14 +24,14 @@ @implementation TeamSettingsViewController @synthesize listOfTeams; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle // add an edit button --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Edit",@"") @@ -39,25 +39,23 @@ target:self action:@selector(toggleEdit:)]; self.navigationItem.rightBarButtonItem = editButton; - [editButton release]; self.navigationItem.title = NSLocalizedString(@"List of teams", nil); } // load the list of teams in the teams directory --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; NSArray *contentsOfDir = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:TEAMS_DIRECTORY() error:NULL]; NSMutableArray *array = [[NSMutableArray alloc] initWithArray:contentsOfDir copyItems:YES]; self.listOfTeams = array; - [array release]; [self.tableView reloadData]; } // modifies the navigation bar to add the "Add" and "Done" buttons --(void) toggleEdit:(id) sender { +- (void)toggleEdit:(id)sender { BOOL isEditing = self.tableView.editing; [self.tableView setEditing:!isEditing animated:YES]; @@ -73,12 +71,11 @@ target:self action:@selector(addTeam:)]; self.navigationItem.leftBarButtonItem = addButton; - [addButton release]; } } // add a team file with default values and updates the table --(void) addTeam:(id) sender { +- (void)addTeam:(id)sender { NSString *fileName = [[NSString alloc] initWithFormat:@"Default Team %u.plist", [self.listOfTeams count]]; [CreationChamber createTeamNamed:[fileName stringByDeletingPathExtension]]; @@ -91,16 +88,15 @@ NSInteger index = [self.listOfTeams indexOfObject:fileName]; [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; - [fileName release]; } #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.listOfTeams count]; } @@ -110,7 +106,7 @@ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } NSUInteger row = [indexPath row]; @@ -122,12 +118,11 @@ } // delete the row and the file --(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { NSUInteger row = [indexPath row]; NSString *teamFile = [[NSString alloc] initWithFormat:@"%@/%@",TEAMS_DIRECTORY(),[self.listOfTeams objectAtIndex:row]]; [[NSFileManager defaultManager] removeItemAtPath:teamFile error:NULL]; - [teamFile release]; [self.listOfTeams removeObjectAtIndex:row]; [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; @@ -136,7 +131,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { SingleTeamViewController *singleTeamViewController = [[SingleTeamViewController alloc] initWithStyle:UITableViewStyleGrouped]; @@ -148,7 +143,6 @@ [singleTeamViewController.tableView setContentOffset:CGPointMake(0,0) animated:NO]; [self.navigationController pushViewController:singleTeamViewController animated:YES]; - [singleTeamViewController release]; [tableView deselectRowAtIndexPath:indexPath animated:YES]; } @@ -156,26 +150,13 @@ #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning + +- (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Relinquish ownership any cached data, images, etc that aren't in use. } --(void) viewDidUnload -{ - self.listOfTeams = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; -} - --(void) dealloc -{ - releaseAndNil(listOfTeams); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/UIImageExtra.h --- a/project_files/HedgewarsMobile/Classes/UIImageExtra.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/UIImageExtra.h Sat Dec 30 01:22:11 2017 +0100 @@ -22,17 +22,17 @@ @interface UIImage (extra) -+(UIImage *)whiteImage:(CGSize) ofSize; -+(UIImage *)drawHogsRepeated:(NSInteger) manyTimes; -+(CGSize) imageSizeFromMetadataOf:(NSString *)aFileName; ++ (UIImage *)whiteImage:(CGSize)ofSize; ++ (UIImage *)drawHogsRepeated:(NSInteger)manyTimes; ++ (CGSize)imageSizeFromMetadataOf:(NSString *)aFileName; --(UIImage *)scaleToSize:(CGSize) size; --(UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint) secondImagePoint; --(id) initWithContentsOfFile:(NSString *)path andCutAt:(CGRect) rect; --(UIImage *)cutAt:(CGRect) rect; --(UIImage *)convertToGrayScale; --(UIImage *)convertToNegative; --(UIImage *)maskImageWith:(UIImage *)maskImage; --(UIImage *)makeRoundCornersOfSize:(CGSize) sizewh; +- (UIImage *)scaleToSize:(CGSize)size; +- (UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint)secondImagePoint; +- (id)initWithContentsOfFile:(NSString *)path andCutAt:(CGRect)rect; +- (UIImage *)cutAt:(CGRect)rect; +- (UIImage *)convertToGrayScale; +- (UIImage *)convertToNegative; +- (UIImage *)maskImageWith:(UIImage *)maskImage; +- (UIImage *)makeRoundCornersOfSize:(CGSize)sizewh; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/UIImageExtra.m --- a/project_files/HedgewarsMobile/Classes/UIImageExtra.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/UIImageExtra.m Sat Dec 30 01:22:11 2017 +0100 @@ -22,7 +22,7 @@ @implementation UIImage (extra) --(UIImage *)scaleToSize:(CGSize) size { +- (UIImage *)scaleToSize:(CGSize)size { // Create a bitmap graphics context; this will also set it as the current context CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, size.width, size.height, 8, 4 * size.width, colorSpace, kCGImageAlphaPremultipliedFirst); @@ -49,7 +49,7 @@ return resultImage; } --(UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint) secondImagePoint { +- (UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint)secondImagePoint { if (secondImage == nil) { DLog(@"Warning, secondImage == nil"); return self; @@ -90,7 +90,7 @@ return resultImage; } --(id) initWithContentsOfFile:(NSString *)path andCutAt:(CGRect) rect { +- (id)initWithContentsOfFile:(NSString *)path andCutAt:(CGRect)rect { // load image from path UIImage *image = [[UIImage alloc] initWithContentsOfFile: path]; @@ -99,7 +99,6 @@ CGImageRef cgImage = CGImageCreateWithImageInRect([image CGImage], rect); // clean memory - [image release]; // create a UIImage from the CGImage (memory must be allocated already) UIImage *sprite = [self initWithCGImage:cgImage]; @@ -115,7 +114,7 @@ } } --(UIImage *)cutAt:(CGRect) rect { +- (UIImage *)cutAt:(CGRect)rect { CGImageRef cgImage = CGImageCreateWithImageInRect([self CGImage], rect); UIImage *res = [UIImage imageWithCGImage:cgImage]; @@ -124,7 +123,7 @@ return res; } --(UIImage *)convertToGrayScale { +- (UIImage *)convertToGrayScale { // Create image rectangle with current image width/height CGRect imageRect = CGRectMake(0, 0, self.size.width, self.size.height); @@ -197,7 +196,7 @@ CGContextRestoreGState(context); } --(UIImage *)makeRoundCornersOfSize:(CGSize) sizewh { +- (UIImage *)makeRoundCornersOfSize:(CGSize)sizewh { CGFloat cornerWidth = sizewh.width; CGFloat cornerHeight = sizewh.height; CGFloat screenScale = [[UIScreen mainScreen] safeScale]; @@ -230,7 +229,7 @@ } // by http://www.sixtemia.com/journal/2010/06/23/uiimage-negative-color-effect/ --(UIImage *)convertToNegative { +- (UIImage *)convertToNegative { UIGraphicsBeginImageContext(self.size); CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeCopy); [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; @@ -243,7 +242,7 @@ return result; } -+(UIImage *)whiteImage:(CGSize) ofSize { ++ (UIImage *)whiteImage:(CGSize)ofSize { CGFloat w = ofSize.width; CGFloat h = ofSize.height; DLog(@"w: %f, h: %f", w, h); @@ -264,10 +263,9 @@ return bkgImg; } -+(UIImage *)drawHogsRepeated:(NSInteger) manyTimes { ++ (UIImage *)drawHogsRepeated:(NSInteger)manyTimes { NSString *imgString = [[NSString alloc] initWithFormat:@"%@/hedgehog.png",[[NSBundle mainBundle] resourcePath]]; UIImage *hogSprite = [[UIImage alloc] initWithContentsOfFile:imgString]; - [imgString release]; CGFloat screenScale = [[UIScreen mainScreen] safeScale]; int w = hogSprite.size.width * screenScale; int h = hogSprite.size.height * screenScale; @@ -277,7 +275,6 @@ // draw the two images in the current context for (int i = 0; i < manyTimes; i++) CGContextDrawImage(context, CGRectMake(i*8*screenScale, 0, w, h), [hogSprite CGImage]); - [hogSprite release]; // Create bitmap image info from pixel data in current context CGImageRef imageRef = CGBitmapContextCreateImage(context); @@ -299,7 +296,7 @@ // this routine checks for the PNG size without loading it in memory // https://github.com/steipete/PSFramework/blob/master/PSFramework%20Version%200.3/PhotoshopFramework/PSMetaDataFunctions.m -+(CGSize) imageSizeFromMetadataOf:(NSString *)aFileName { ++ (CGSize)imageSizeFromMetadataOf:(NSString *)aFileName { // File Name to C String. const char *fileName = [aFileName UTF8String]; // source file diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/VoicesViewController.h --- a/project_files/HedgewarsMobile/Classes/VoicesViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/VoicesViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -31,8 +31,8 @@ int lastChannel; } -@property (nonatomic,retain) NSMutableDictionary *teamDictionary; -@property (nonatomic,retain) NSArray *voiceArray; -@property (nonatomic,retain) NSIndexPath *lastIndexPath; +@property (nonatomic, strong) NSMutableDictionary *teamDictionary; +@property (nonatomic, strong) NSArray *voiceArray; +@property (nonatomic, strong) NSIndexPath *lastIndexPath; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/VoicesViewController.m --- a/project_files/HedgewarsMobile/Classes/VoicesViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/VoicesViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -24,13 +24,13 @@ @synthesize teamDictionary, voiceArray, lastIndexPath; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; voiceBeingPlayed = NULL; @@ -43,19 +43,19 @@ self.title = NSLocalizedString(@"Set hedgehog voices",@""); } --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // this moves the tableview to the top [self.tableView setContentOffset:CGPointMake(0,0) animated:NO]; } --(void) viewDidAppear:(BOOL)animated { +- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; Mix_OpenAudio(44100, 0x8010, 1, 1024); } --(void) viewDidDisappear:(BOOL)animated { +- (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; if(voiceBeingPlayed != NULL) { Mix_HaltChannel(lastChannel); @@ -68,11 +68,11 @@ #pragma mark - #pragma mark Table view data source --(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [self.voiceArray count]; } @@ -83,7 +83,7 @@ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } NSString *voice = [[voiceArray objectAtIndex:[indexPath row]] stringByDeletingPathExtension]; @@ -102,7 +102,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger newRow = [indexPath row]; NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; @@ -131,14 +131,14 @@ int index = arc4random_uniform((int)[array count]); voiceBeingPlayed = Mix_LoadWAV([[voiceDir stringByAppendingString:[array objectAtIndex:index]] UTF8String]); - [voiceDir release]; lastChannel = Mix_PlayChannel(-1, voiceBeingPlayed, 0); } #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { + +- (void)didReceiveMemoryWarning { if (voiceBeingPlayed != NULL) { Mix_HaltChannel(lastChannel); Mix_FreeChunk(voiceBeingPlayed); @@ -149,26 +149,13 @@ [super didReceiveMemoryWarning]; } --(void) viewDidUnload { +- (void)dealloc { if (voiceBeingPlayed != NULL) { Mix_HaltChannel(lastChannel); Mix_FreeChunk(voiceBeingPlayed); voiceBeingPlayed = NULL; } - self.lastIndexPath = nil; - self.teamDictionary = nil; - self.voiceArray = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; } --(void) dealloc { - releaseAndNil(voiceArray); - releaseAndNil(teamDictionary); - releaseAndNil(lastIndexPath); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/WeaponCellView.h --- a/project_files/HedgewarsMobile/Classes/WeaponCellView.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/WeaponCellView.h Sat Dec 30 01:22:11 2017 +0100 @@ -22,12 +22,12 @@ @protocol WeaponButtonControllerDelegate --(void) updateValues:(NSArray *)withArray atIndex:(NSInteger) index; +- (void)updateValues:(NSArray *)withArray atIndex:(NSInteger)index; @end @interface WeaponCellView : UITableViewCell { - id delegate; + id __weak delegate; UILabel *weaponName; UIImageView *weaponIcon; @@ -50,26 +50,26 @@ UILabel *helpLabel; } -@property (nonatomic,assign) id delegate; +@property (nonatomic, weak) id delegate; -@property (nonatomic,retain) UILabel *weaponName; -@property (nonatomic,retain) UIImageView *weaponIcon; +@property (nonatomic, strong) UILabel *weaponName; +@property (nonatomic, strong) UIImageView *weaponIcon; -@property (nonatomic,retain) UISlider *initialSli; -@property (nonatomic,retain) UISlider *probabilitySli; -@property (nonatomic,retain) UISlider *delaySli; -@property (nonatomic,retain) UISlider *crateSli; +@property (nonatomic, strong) UISlider *initialSli; +@property (nonatomic, strong) UISlider *probabilitySli; +@property (nonatomic, strong) UISlider *delaySli; +@property (nonatomic, strong) UISlider *crateSli; -@property (nonatomic,retain) UIImageView *initialImg; -@property (nonatomic,retain) UIImageView *probabilityImg; -@property (nonatomic,retain) UIImageView *delayImg; -@property (nonatomic,retain) UIImageView *crateImg; +@property (nonatomic, strong) UIImageView *initialImg; +@property (nonatomic, strong) UIImageView *probabilityImg; +@property (nonatomic, strong) UIImageView *delayImg; +@property (nonatomic, strong) UIImageView *crateImg; -@property (nonatomic,retain) UILabel *initialLab; -@property (nonatomic,retain) UILabel *probabilityLab; -@property (nonatomic,retain) UILabel *delayLab; -@property (nonatomic,retain) UILabel *crateLab; +@property (nonatomic, strong) UILabel *initialLab; +@property (nonatomic, strong) UILabel *probabilityLab; +@property (nonatomic, strong) UILabel *delayLab; +@property (nonatomic, strong) UILabel *crateLab; -@property (nonatomic,retain) UILabel *helpLabel; +@property (nonatomic, strong) UILabel *helpLabel; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/WeaponCellView.m --- a/project_files/HedgewarsMobile/Classes/WeaponCellView.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/WeaponCellView.m Sat Dec 30 01:22:11 2017 +0100 @@ -24,7 +24,7 @@ @synthesize delegate, weaponName, weaponIcon, initialSli, probabilitySli, delaySli, crateSli, helpLabel, initialImg, probabilityImg, delayImg, crateImg, initialLab, probabilityLab, delayLab, crateLab; --(id) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { +- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) { delegate = nil; @@ -67,16 +67,12 @@ NSString *imgAmmoStr = [[NSString alloc] initWithFormat:@"%@/ammopic.png",ICONS_DIRECTORY()]; initialImg = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:imgAmmoStr]]; - [imgAmmoStr release]; NSString *imgDamageStr = [[NSString alloc] initWithFormat:@"%@/iconDamage.png",ICONS_DIRECTORY()]; probabilityImg = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:imgDamageStr]]; - [imgDamageStr release]; NSString *imgTimeStr = [[NSString alloc] initWithFormat:@"%@/iconTime.png",ICONS_DIRECTORY()]; delayImg = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:imgTimeStr]]; - [imgTimeStr release]; NSString *imgBoxStr = [[NSString alloc] initWithFormat:@"%@/iconBox.png",ICONS_DIRECTORY()]; crateImg = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:imgBoxStr]]; - [imgBoxStr release]; initialLab = [[UILabel alloc] init]; initialLab.backgroundColor = [UIColor clearColor]; @@ -128,7 +124,7 @@ return self; } --(void) layoutSubviews { +- (void)layoutSubviews { [super layoutSubviews]; CGFloat hOffset = 80; @@ -186,13 +182,13 @@ } /* --(void) setSelected:(BOOL)selected animated:(BOOL)animated { +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state } */ --(void) valueChanged:(id) sender { +- (void)valueChanged:(id)sender { if (self.delegate != nil) { initialLab.text = ((int)initialSli.value == 9) ? @"∞" : [NSString stringWithFormat:@"%d",(int)initialSli.value]; probabilityLab.text = ((int)probabilitySli.value == 9) ? @"∞" : [NSString stringWithFormat:@"%d",(int)probabilitySli.value]; @@ -209,7 +205,7 @@ DLog(@"error - delegate = nil!"); } --(void) startDragging:(id) sender { +- (void)startDragging:(id)sender { UISlider *slider = (UISlider *)sender; NSString *str = nil; @@ -242,28 +238,8 @@ self.helpLabel.text = str; } --(void) stopDragging:(id) sender { +- (void)stopDragging:(id)sender { self.helpLabel.text = @""; } --(void) dealloc { - self.delegate = nil; - releaseAndNil(weaponName); - releaseAndNil(weaponIcon); - releaseAndNil(initialSli); - releaseAndNil(probabilitySli); - releaseAndNil(delaySli); - releaseAndNil(crateSli); - releaseAndNil(initialImg); - releaseAndNil(probabilityImg); - releaseAndNil(delayImg); - releaseAndNil(crateImg); - releaseAndNil(initialLab); - releaseAndNil(probabilityLab); - releaseAndNil(delayLab); - releaseAndNil(crateLab); - releaseAndNil(helpLabel); - [super dealloc]; -} - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/WeaponSettingsViewController.h --- a/project_files/HedgewarsMobile/Classes/WeaponSettingsViewController.h Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/WeaponSettingsViewController.h Sat Dec 30 01:22:11 2017 +0100 @@ -24,6 +24,6 @@ NSMutableArray *listOfWeapons; } -@property (nonatomic, retain) NSMutableArray *listOfWeapons; +@property (nonatomic, strong) NSMutableArray *listOfWeapons; @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Classes/WeaponSettingsViewController.m --- a/project_files/HedgewarsMobile/Classes/WeaponSettingsViewController.m Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Classes/WeaponSettingsViewController.m Sat Dec 30 01:22:11 2017 +0100 @@ -24,13 +24,13 @@ @implementation WeaponSettingsViewController @synthesize listOfWeapons; --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); } #pragma mark - #pragma mark View lifecycle --(void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Edit",@"") @@ -38,24 +38,22 @@ target:self action:@selector(toggleEdit:)]; self.navigationItem.rightBarButtonItem = editButton; - [editButton release]; self.navigationItem.title = NSLocalizedString(@"List of weapons", nil); } --(void) viewWillAppear:(BOOL) animated { +- (void)viewWillAppear:(BOOL) animated { [super viewWillAppear:animated]; NSArray *contentsOfDir = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:WEAPONS_DIRECTORY() error:NULL]; NSMutableArray *array = [[NSMutableArray alloc] initWithArray:contentsOfDir copyItems:YES]; self.listOfWeapons = array; - [array release]; [self.tableView reloadData]; } // modifies the navigation bar to add the "Add" and "Done" buttons --(void) toggleEdit:(id) sender { +- (void)toggleEdit:(id)sender { BOOL isEditing = self.tableView.editing; [self.tableView setEditing:!isEditing animated:YES]; @@ -71,11 +69,10 @@ target:self action:@selector(addWeapon:)]; self.navigationItem.leftBarButtonItem = addButton; - [addButton release]; } } --(void) addWeapon:(id) sender { +- (void)addWeapon:(id)sender { NSString *fileName = [[NSString alloc] initWithFormat:@"Weapon %u.plist", [self.listOfWeapons count]]; [CreationChamber createWeaponNamed:[fileName stringByDeletingPathExtension]]; @@ -88,7 +85,6 @@ NSInteger index = [self.listOfWeapons indexOfObject:fileName]; [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; - [fileName release]; } #pragma mark - @@ -106,7 +102,7 @@ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } NSUInteger row = [indexPath row]; @@ -118,12 +114,11 @@ } // delete the row and the file --(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { NSUInteger row = [indexPath row]; NSString *schemeFile = [[NSString alloc] initWithFormat:@"%@/%@",WEAPONS_DIRECTORY(),[self.listOfWeapons objectAtIndex:row]]; [[NSFileManager defaultManager] removeItemAtPath:schemeFile error:NULL]; - [schemeFile release]; [self.listOfWeapons removeObjectAtIndex:row]; [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; @@ -131,7 +126,7 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { SingleWeaponViewController *singleWeaponViewController = [[SingleWeaponViewController alloc] initWithStyle:UITableViewStyleGrouped]; @@ -143,7 +138,6 @@ [singleWeaponViewController.tableView setContentOffset:CGPointMake(0,0) animated:NO]; [self.navigationController pushViewController:singleWeaponViewController animated:YES]; - [singleWeaponViewController release]; [tableView deselectRowAtIndexPath:indexPath animated:YES]; } @@ -151,25 +145,12 @@ #pragma mark - #pragma mark Memory management + -(void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; -} - --(void) viewDidUnload -{ - self.listOfWeapons = nil; - MSG_DIDUNLOAD(); - [super viewDidUnload]; + MSG_MEMCLEAN(); } - --(void) dealloc -{ - releaseAndNil(listOfWeapons); - [super dealloc]; -} - - @end diff -r 2c06b1120749 -r 00215a7ec5f5 project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj --- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Fri Dec 29 22:37:31 2017 +0100 +++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sat Dec 30 01:22:11 2017 +0100 @@ -74,9 +74,9 @@ 615AD9EB1207654E00F2FF04 /* helpButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 615AD9EA1207654E00F2FF04 /* helpButton.png */; }; 615BE3D4155C5DDF003CA34D /* uInputHandler.pas in Sources */ = {isa = PBXBuildFile; fileRef = 615BE3D3155C5DDF003CA34D /* uInputHandler.pas */; }; 615E755A14E41E8C00FBA131 /* MXAudioPlayerFadeOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E755914E41E8C00FBA131 /* MXAudioPlayerFadeOperation.m */; }; - 615E76BC14E4421200FBA131 /* MGSplitCornersView.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E76B714E4421200FBA131 /* MGSplitCornersView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; - 615E76BD14E4421200FBA131 /* MGSplitDividerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E76B914E4421200FBA131 /* MGSplitDividerView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; - 615E76BE14E4421200FBA131 /* MGSplitViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E76BB14E4421200FBA131 /* MGSplitViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 615E76BC14E4421200FBA131 /* MGSplitCornersView.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E76B714E4421200FBA131 /* MGSplitCornersView.m */; }; + 615E76BD14E4421200FBA131 /* MGSplitDividerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E76B914E4421200FBA131 /* MGSplitDividerView.m */; }; + 615E76BE14E4421200FBA131 /* MGSplitViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E76BB14E4421200FBA131 /* MGSplitViewController.m */; }; 615FEAE212A2A6640098EE92 /* localplayButton~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 615FEADF12A2A6640098EE92 /* localplayButton~ipad.png */; }; 615FEAE312A2A6640098EE92 /* localplayButton~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = 615FEAE012A2A6640098EE92 /* localplayButton~iphone.png */; }; 616065A8159A71FD00CFAEF4 /* hwclassic.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 616065A7159A71FD00CFAEF4 /* hwclassic.mp3 */; }; @@ -279,7 +279,7 @@ F65E1DC01B9B95A400A78ADF /* Icon-76.png in Resources */ = {isa = PBXBuildFile; fileRef = F65E1DBD1B9B95A400A78ADF /* Icon-76.png */; }; F65E1DC11B9B95A400A78ADF /* Icon-76@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F65E1DBE1B9B95A400A78ADF /* Icon-76@2x.png */; }; F6756D801BD8550500B6AB6B /* LabelWithIBLocalization.m in Sources */ = {isa = PBXBuildFile; fileRef = F6756D7F1BD8550500B6AB6B /* LabelWithIBLocalization.m */; }; - F67FC8121BEC06E700A9DC75 /* Appirater.m in Sources */ = {isa = PBXBuildFile; fileRef = F67FC8101BEC06E700A9DC75 /* Appirater.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + F67FC8121BEC06E700A9DC75 /* Appirater.m in Sources */ = {isa = PBXBuildFile; fileRef = F67FC8101BEC06E700A9DC75 /* Appirater.m */; }; F67FC8141BEC072B00A9DC75 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F67FC8131BEC072B00A9DC75 /* StoreKit.framework */; }; F67FC8161BEC17AC00A9DC75 /* Appirater.bundle in Resources */ = {isa = PBXBuildFile; fileRef = F67FC8151BEC17AC00A9DC75 /* Appirater.bundle */; }; F6BA38461BA7A834005D16EA /* GameLogViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BA38451BA7A834005D16EA /* GameLogViewController.m */; }; @@ -2109,6 +2109,7 @@ 1D6058940D05DD3E006BFB54 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; GCC_DYNAMIC_NO_PIC = NO; @@ -2126,6 +2127,7 @@ 1D6058950D05DD3E006BFB54 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; @@ -2218,6 +2220,7 @@ 61022D7D12305A2800B08935 /* Distro AppStore */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; @@ -2337,6 +2340,7 @@ 6137064C117B1CB3004EE44A /* Distro Adhoc */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES;