1. Objective C / Говнокод #11856

    −100

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    - (void) setupAndMigrate: (id<DatabaseManagerMigrateDelegate>) delegate
    {
    	self.migrationDelegate = delegate;
    	NSThread * migrationThread = [[[NSThread alloc ] initWithTarget: self selector: @selector( threadMigration )	object: nil ] autorelease];
    	[migrationThread start];
    }
    
    - (void) threadMigration
    {
    	NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    	
    	[self performBlockOnMainThread: ^{
    		_mainObjectContext = [[NSManagedObjectContext alloc] init];
    		[_mainObjectContext setPersistentStoreCoordinator:self.persistentStoreCoordinator];
    		[_mainObjectContext setUndoManager:nil];
    		NSMergePolicy * merge = [[NSMergePolicy alloc] initWithMergeType:NSMergeByPropertyObjectTrumpMergePolicyType];
    		[_mainObjectContext setMergePolicy: merge ];
    		[merge release];
    	} waitUntilDone: YES ];
    	
    	if( MIGRATION_VERSION_15 == migration )
    	{
    		[self performBlockOnMainThread: ^{
    			[self setMigrationStatus: DMS_CHECKFAVORITETRACKS ];
    			[[JKAlbumsManager sharedManager] initFavoriteTracksInContext:_mainObjectContext];
    		} waitUntilDone: YES ];
    		
    		[self performBlockOnMainThread: ^{
    			[self setMigrationStatus: DMS_CHECKFAVORITEARTIST ];
    			[[JKArtistsManager sharedManager] initFavoriteTracksInContext:_mainObjectContext];
    		} waitUntilDone: YES ];
    		
    		[self performBlockOnMainThread: ^{
    			[self setMigrationStatus: DMS_UPDATEARTISTIDS ];
    			[[JKArtistsManager sharedManager] migrateArtistFromPreMasterArtistEra];
    		} waitUntilDone: YES ];
    		
    		[self performBlockOnMainThread: ^{
    			[self setMigrationStatus: DMS_PLAYLISTMIGRATION ];
    			[self performPlaylistContentMigration];
    		} waitUntilDone: YES ];
    
    		[self performBlockOnMainThread: ^{
    			[self setMigrationStatus: DMS_SAVEANDFINALIZE ];
    			[DatabaseManager saveContext:_mainObjectContext];
    		} waitUntilDone: YES ];
    
    	}
    
    	[self performBlockOnMainThread: ^{
    		[self setMigrationStatus: DMS_DONE ];
    	} waitUntilDone: YES ];
    
    	self.migrationTimer = nil;
    	self.migrationDelegate = nil;
    	[pool drain];
    	[NSThread exit];
    }

    Видимо тут была очень острая необходимость создавать дополнительный поток =) Ну и [NSThread exit], что бы кошерно все было.

    Запостил: nunaconecto, 01 Октября 2012

    Комментарии (0) RSS

    Добавить комментарий

    Ошибка компиляции комментария:
    1. Гости могут высказаться только во вторник, пятницу или субботу
    ava Семь раз отмерь — один отрежь, guest!
    А не использовать ли нам bbcode?
    • [b]жирный[/b] — жирный
    • [i]курсив[/i] — курсив
    • [u]подчеркнутый[/u] — подчеркнутый
    • [s]перечеркнутый[/s] — перечеркнутый
    • [blink]мигающий[/blink] — мигающий
    • [color=red]цвет[/color] — цвет (подробнее)
    • [size=20]размер[/size] — размер (подробнее)
    • [code=<language>]some code[/code] (подробнее)
    Проверочный код