From a5b9d40ffb6b1300c729c11b00a90480dae78d99 Mon Sep 17 00:00:00 2001 From: Khaitu Date: Tue, 14 Mar 2017 18:09:17 +0000 Subject: [PATCH 1/4] Updated to ARC --- OrigamiEngine.xcodeproj/project.pbxproj | 38 +++++++-- .../contents.xcworkspacedata | 7 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 39016 bytes .../WorkspaceSettings.xcsettings | 16 ++++ .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 ++ .../xcschemes/OrigamiEngine.xcscheme | 80 ++++++++++++++++++ .../xcschemes/OrigamiEngineMac.xcscheme | 80 ++++++++++++++++++ .../xcschemes/OrigamiEngineTests.xcscheme | 80 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 42 +++++++++ OrigamiEngine/ORGMConverter.m | 13 ++- OrigamiEngine/ORGMEngine.h | 4 +- OrigamiEngine/ORGMEngine.m | 15 +--- OrigamiEngine/ORGMInputUnit.m | 4 - OrigamiEngine/ORGMOutputUnit.m | 7 +- OrigamiEngine/ORGMPluginManager.h | 4 +- OrigamiEngine/ORGMPluginManager.m | 11 +-- OrigamiEngine/Plugins/CoreAudioDecoder.m | 21 ++--- OrigamiEngine/Plugins/CueSheet.m | 21 ++--- OrigamiEngine/Plugins/CueSheetContainer.m | 1 - OrigamiEngine/Plugins/CueSheetDecoder.m | 15 ++-- OrigamiEngine/Plugins/CueSheetTrack.h | 2 +- OrigamiEngine/Plugins/CueSheetTrack.m | 18 +--- OrigamiEngine/Plugins/FileSource.m | 4 +- OrigamiEngine/Plugins/FlacDecoder.m | 27 +++--- OrigamiEngine/Plugins/HTTPSource.m | 12 +-- OrigamiEngine/Plugins/OpusFileDecoder.m | 15 ++-- 26 files changed, 407 insertions(+), 135 deletions(-) create mode 100644 OrigamiEngine.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 OrigamiEngine.xcodeproj/project.xcworkspace/xcuserdata/tom.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 OrigamiEngine.xcodeproj/project.xcworkspace/xcuserdata/tom.xcuserdatad/WorkspaceSettings.xcsettings create mode 100644 OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngine.xcscheme create mode 100644 OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineMac.xcscheme create mode 100644 OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineTests.xcscheme create mode 100644 OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/OrigamiEngine.xcodeproj/project.pbxproj b/OrigamiEngine.xcodeproj/project.pbxproj index f5b6447..24562d3 100644 --- a/OrigamiEngine.xcodeproj/project.pbxproj +++ b/OrigamiEngine.xcodeproj/project.pbxproj @@ -510,7 +510,7 @@ 959B580015CEE13C00D44955 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0460; + LastUpgradeCheck = 0820; }; buildConfigurationList = 959B580315CEE13C00D44955 /* Build configuration list for PBXProject "OrigamiEngine" */; compatibilityVersion = "Xcode 3.2"; @@ -664,7 +664,6 @@ 9502C29F16C591C00054F4E3 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_CXX_LIBRARY = "libc++"; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -696,7 +695,6 @@ 9502C2A016C591C00054F4E3 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_CXX_LIBRARY = "libc++"; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -729,15 +727,24 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -745,10 +752,14 @@ ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -757,19 +768,30 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; @@ -834,6 +856,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "OrigamiEngine/OrigamiEngine-Prefix.pch"; INFOPLIST_FILE = "OrigamiEngineTests/OrigamiEngineTests-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "origami.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = octest; }; @@ -850,6 +873,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "OrigamiEngine/OrigamiEngine-Prefix.pch"; INFOPLIST_FILE = "OrigamiEngineTests/OrigamiEngineTests-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "origami.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = octest; }; diff --git a/OrigamiEngine.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/OrigamiEngine.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/OrigamiEngine.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/OrigamiEngine.xcodeproj/project.xcworkspace/xcuserdata/tom.xcuserdatad/UserInterfaceState.xcuserstate b/OrigamiEngine.xcodeproj/project.xcworkspace/xcuserdata/tom.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..7703143c26f9ac925961876909999f29ef6b983b GIT binary patch literal 39016 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 + + + + BuildLocationStyle + UseAppPreferences + CustomBuildLocationType + RelativeToDerivedData + DerivedDataLocationStyle + Default + IssueFilterStyle + ShowActiveSchemeOnly + LiveSourceIssuesEnabled + + + diff --git a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngine.xcscheme b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngine.xcscheme new file mode 100644 index 0000000..59d9adf --- /dev/null +++ b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngine.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineMac.xcscheme b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineMac.xcscheme new file mode 100644 index 0000000..fbde5d9 --- /dev/null +++ b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineMac.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineTests.xcscheme b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineTests.xcscheme new file mode 100644 index 0000000..d8ec440 --- /dev/null +++ b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineTests.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/xcschememanagement.plist b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..fd9d392 --- /dev/null +++ b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,42 @@ + + + + + SchemeUserState + + OrigamiEngine.xcscheme + + orderHint + 0 + + OrigamiEngineMac.xcscheme + + orderHint + 1 + + OrigamiEngineTests.xcscheme + + orderHint + 2 + + + SuppressBuildableAutocreation + + 9502C28D16C591C00054F4E3 + + primary + + + 959B580815CEE13C00D44955 + + primary + + + 959B581915CEE13C00D44955 + + primary + + + + + diff --git a/OrigamiEngine/ORGMConverter.m b/OrigamiEngine/ORGMConverter.m index cc2d1bd..b28f813 100644 --- a/OrigamiEngine/ORGMConverter.m +++ b/OrigamiEngine/ORGMConverter.m @@ -35,9 +35,9 @@ @interface ORGMConverter () { void *writeBuf; } -@property (retain, nonatomic) ORGMInputUnit *inputUnit; -@property (unsafe_unretained, nonatomic) ORGMOutputUnit *outputUnit; -@property (retain, nonatomic) NSMutableData *convertedData; +@property (strong, nonatomic) ORGMInputUnit *inputUnit; +@property (weak, nonatomic) ORGMOutputUnit *outputUnit; +@property (strong, nonatomic) NSMutableData *convertedData; @end @implementation ORGMConverter @@ -58,9 +58,8 @@ - (id)initWithInputUnit:(ORGMInputUnit *)inputUnit { - (void)dealloc { free(callbackBuffer); free(writeBuf); - [_convertedData release]; + _inputUnit = nil; - [super dealloc]; } #pragma mark - public @@ -158,7 +157,7 @@ - (int)convert:(void *)dest amount:(int)amount { ioData.mBuffers[0].mNumberChannels = _outputFormat.mChannelsPerFrame; ioData.mNumberBuffers = 1; - err = AudioConverterFillComplexBuffer(_converter, ACInputProc, self, &ioNumberFrames, &ioData, NULL); + err = AudioConverterFillComplexBuffer(_converter, ACInputProc, (__bridge void * _Nullable)(self), &ioNumberFrames, &ioData, NULL); int amountRead = ioData.mBuffers[0].mDataByteSize; if (err == kAudioConverterErr_InvalidInputSize) { amountRead += [self convert:dest + amountRead amount:amount - amountRead]; @@ -171,7 +170,7 @@ static OSStatus ACInputProc(AudioConverterRef inAudioConverter, UInt32* ioNumberDataPackets, AudioBufferList* ioData, AudioStreamPacketDescription** outDataPacketDescription, void* inUserData) { - ORGMConverter *converter = (ORGMConverter *)inUserData; + ORGMConverter *converter = (__bridge ORGMConverter *)inUserData; OSStatus err = noErr; int amountToWrite; diff --git a/OrigamiEngine/ORGMEngine.h b/OrigamiEngine/ORGMEngine.h index b364db8..490e299 100644 --- a/OrigamiEngine/ORGMEngine.h +++ b/OrigamiEngine/ORGMEngine.h @@ -61,12 +61,12 @@ typedef enum : NSInteger { @discussion Value will be provided only for the `ORGMEngineStateError`, with other states this propertie will return `nil`. */ -@property (retain, nonatomic, readonly) NSError *currentError; +@property (strong, nonatomic, readonly) NSError *currentError; /** The object that conforms ORGMEngineDelegate protocol and acts as the delegate. */ -@property (unsafe_unretained, nonatomic) id delegate; +@property (weak, nonatomic) id delegate; /** Starts new playback process from corresponding source with provided output type of output unit. diff --git a/OrigamiEngine/ORGMEngine.m b/OrigamiEngine/ORGMEngine.m index 7c129d1..e240f48 100644 --- a/OrigamiEngine/ORGMEngine.m +++ b/OrigamiEngine/ORGMEngine.m @@ -29,11 +29,11 @@ #import "ORGMCommonProtocols.h" @interface ORGMEngine () -@property (retain, nonatomic) ORGMInputUnit *input; -@property (retain, nonatomic) ORGMOutputUnit *output; -@property (retain, nonatomic) ORGMConverter *converter; +@property (strong, nonatomic) ORGMInputUnit *input; +@property (strong, nonatomic) ORGMOutputUnit *output; +@property (strong, nonatomic) ORGMConverter *converter; @property (assign, nonatomic) ORGMEngineState currentState; -@property (retain, nonatomic) NSError *currentError; +@property (strong, nonatomic) NSError *currentError; @end @implementation ORGMEngine @@ -53,10 +53,6 @@ - (id)init { - (void)dealloc { [self removeObserver:self forKeyPath:@"currentState"]; - [_input release]; - [_output release]; - [_converter release]; - [super dealloc]; } #pragma mark - public @@ -75,7 +71,6 @@ - (void)playUrl:(NSURL *)url withOutputUnitClass:(Class)outputUnitClass { ORGMInputUnit *input = [[ORGMInputUnit alloc] init]; self.input = input; - [input release]; if (![_input openWithUrl:url]) { self.currentState = ORGMEngineStateError; @@ -91,13 +86,11 @@ - (void)playUrl:(NSURL *)url withOutputUnitClass:(Class)outputUnitClass { ORGMConverter *converter = [[ORGMConverter alloc] initWithInputUnit:_input]; self.converter = converter; - [converter release]; ORGMOutputUnit *output = [[outputUnitClass alloc] initWithConverter:_converter]; output.outputFormat = _outputFormat; self.output = output; [_output setVolume:_volume]; - [output release]; if (![_converter setupWithOutputUnit:_output]) { self.currentState = ORGMEngineStateError; diff --git a/OrigamiEngine/ORGMInputUnit.m b/OrigamiEngine/ORGMInputUnit.m index 1a5a6c5..8c5a08a 100644 --- a/OrigamiEngine/ORGMInputUnit.m +++ b/OrigamiEngine/ORGMInputUnit.m @@ -54,10 +54,6 @@ - (id)init { - (void)dealloc { [self close]; free(inputBuffer); - [_decoder release]; - [_source release]; - [_data release]; - [super dealloc]; } #pragma mark - public diff --git a/OrigamiEngine/ORGMOutputUnit.m b/OrigamiEngine/ORGMOutputUnit.m index 30495df..13ce9d9 100644 --- a/OrigamiEngine/ORGMOutputUnit.m +++ b/OrigamiEngine/ORGMOutputUnit.m @@ -32,7 +32,7 @@ @interface ORGMOutputUnit () { AudioStreamBasicDescription _format; unsigned long long _amountPlayed; } -@property (retain, nonatomic) ORGMConverter *converter; +@property (strong, nonatomic) ORGMConverter *converter; - (int)readData:(void *)ptr amount:(int)amount; @end @@ -53,7 +53,6 @@ - (id)initWithConverter:(ORGMConverter *)converter { - (void)dealloc { [self stop]; - [super dealloc]; } #pragma mark - public @@ -130,7 +129,7 @@ static OSStatus Sound_Renderer(void *inRefCon, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData) { - ORGMOutputUnit *output = (ORGMOutputUnit *)inRefCon; + ORGMOutputUnit *output = (__bridge ORGMOutputUnit *)inRefCon; OSStatus err = noErr; void *readPointer = ioData->mBuffers[0].mData; @@ -229,7 +228,7 @@ - (BOOL)setup { size); renderCallback.inputProc = Sound_Renderer; - renderCallback.inputProcRefCon = self; + renderCallback.inputProcRefCon = (__bridge void * _Nullable)(self); AudioUnitSetProperty(outputUnit, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Input, 0, &renderCallback, diff --git a/OrigamiEngine/ORGMPluginManager.h b/OrigamiEngine/ORGMPluginManager.h index 62b7edf..1e2a9df 100644 --- a/OrigamiEngine/ORGMPluginManager.h +++ b/OrigamiEngine/ORGMPluginManager.h @@ -34,7 +34,7 @@ /** Custom plugin resolver that is used during plugin resolution process. Plugin manager fallbacks to the default implementation if `resolver` is empty or it returned `nil` value. */ -@property (nonatomic, unsafe_unretained) id resolver; +@property (nonatomic, weak) id resolver; + (ORGMPluginManager *)sharedManager; @@ -82,4 +82,4 @@ - (id)sourceForURL:(NSURL *)url error:(NSError **)error; - (id)decoderForSource:(id)source error:(NSError **)error; - (NSArray *)urlsForContainerURL:(NSURL *)url error:(NSError **)error; -@end \ No newline at end of file +@end diff --git a/OrigamiEngine/ORGMPluginManager.m b/OrigamiEngine/ORGMPluginManager.m index 6a6088e..d3f1213 100644 --- a/OrigamiEngine/ORGMPluginManager.m +++ b/OrigamiEngine/ORGMPluginManager.m @@ -89,13 +89,6 @@ - (id)init { return self; } -- (void)dealloc { - [_sources release]; - [_decoders release]; - [_containers release]; - [super dealloc]; -} - - (id)sourceForURL:(NSURL *)url error:(NSError **)error { id result; if (_resolver && (result = [_resolver sourceForURL:url error:error])) { @@ -115,7 +108,7 @@ - (void)dealloc { } return nil; } - return [[[source alloc] init] autorelease]; + return [[source alloc] init]; } - (id)decoderForSource:(id)source error:(NSError **)error { @@ -142,7 +135,7 @@ - (void)dealloc { return nil; } - return [[[decoder alloc] init] autorelease]; + return [[decoder alloc] init] ; } - (NSArray *)urlsForContainerURL:(NSURL *)url error:(NSError **)error { diff --git a/OrigamiEngine/Plugins/CoreAudioDecoder.m b/OrigamiEngine/Plugins/CoreAudioDecoder.m index e8fc6b2..ee497eb 100644 --- a/OrigamiEngine/Plugins/CoreAudioDecoder.m +++ b/OrigamiEngine/Plugins/CoreAudioDecoder.m @@ -39,16 +39,13 @@ @interface CoreAudioDecoder () { float frequency; long totalFrames; } -@property (retain, nonatomic) NSMutableDictionary *metadata; +@property (strong, nonatomic) NSMutableDictionary *metadata; @end @implementation CoreAudioDecoder - (void)dealloc { [self close]; - [_source release]; - [_metadata release]; - [super dealloc]; } #pragma mark - ORGMDecoder @@ -63,7 +60,7 @@ + (NSArray *)fileTypes { return nil; } - return [sAudioExtensions autorelease]; + return sAudioExtensions; } - (NSDictionary *)properties { @@ -103,8 +100,8 @@ - (int)readAudio:(void *)buf frames:(UInt32)frames { - (BOOL)open:(id)source { self.metadata = [NSMutableDictionary dictionary]; - _source = [source retain]; - OSStatus result = AudioFileOpenWithCallbacks(_source, audioFile_ReadProc, NULL, + _source = source; + OSStatus result = AudioFileOpenWithCallbacks((__bridge void * _Nonnull)(_source), audioFile_ReadProc, NULL, audioFile_GetSizeProc, NULL, 0, &_audioFile); @@ -229,7 +226,7 @@ - (NSMutableDictionary *)metadataForFile:(AudioFileID)audioFile { err = AudioFileGetProperty(audioFile, kAudioFilePropertyInfoDictionary, &dataSize, &dictionary); if (err != noErr) return result; - result = [NSMutableDictionary dictionaryWithDictionary:(NSDictionary *)dictionary]; + result = [NSMutableDictionary dictionaryWithDictionary:(__bridge NSDictionary *)dictionary]; CFRelease(dictionary); err = AudioFileGetPropertyInfo(audioFile, @@ -244,7 +241,7 @@ - (NSMutableDictionary *)metadataForFile:(AudioFileID)audioFile { &image); if (image) { [self.metadata setObject:image forKey:@"picture"]; - CFRelease(image); + CFRelease((__bridge CFTypeRef)(image)); } } else if ((image = [self imageDataFromID3Tag:audioFile])) { @@ -290,7 +287,7 @@ - (NSData *)imageDataFromID3Tag:(AudioFileID)audioFile { &id3TagSize, &id3Dict); - NSDictionary *tagDict = [NSDictionary dictionaryWithDictionary:(NSDictionary *)id3Dict]; + NSDictionary *tagDict = [NSDictionary dictionaryWithDictionary:(__bridge NSDictionary *)id3Dict]; free(rawID3Tag); CFRelease(id3Dict); @@ -311,7 +308,7 @@ static OSStatus audioFile_ReadProc(void *inClientData, UInt32 requestCount, void *buffer, UInt32 *actualCount) { - id source = inClientData; + id source = (__bridge id)(inClientData); // Skip potential id3v1 tags over HTTP connection if ([NSStringFromClass([source class]) isEqualToString:@"HTTPSource"] && @@ -328,7 +325,7 @@ static OSStatus audioFile_ReadProc(void *inClientData, } static SInt64 audioFile_GetSizeProc(void *inClientData) { - id source = inClientData; + id source = (__bridge id)(inClientData); SInt64 len = [source size]; return len; } diff --git a/OrigamiEngine/Plugins/CueSheet.m b/OrigamiEngine/Plugins/CueSheet.m index f829a5d..9aa8331 100644 --- a/OrigamiEngine/Plugins/CueSheet.m +++ b/OrigamiEngine/Plugins/CueSheet.m @@ -42,11 +42,6 @@ - (id)initWithURL:(NSURL *)url { return self; } -- (void)dealloc { - [_tracks release]; - [super dealloc]; -} - #pragma mark - private - (void)parseFileWithUrl:(NSURL *)url { NSStringEncoding encoding; @@ -159,18 +154,16 @@ - (void)parseFileWithUrl:(NSURL *)url { if (![scanner scanUpToString:@"\"" intoString:&artist]) continue; } else if ([command isEqualToString:@"TITLE"]) { - NSString **titleDest; + if (![scanner scanString:@"\"" intoString:nil]) + continue; + if (!path) { - titleDest = &album; - } else { - titleDest = &title; - } - - if (![scanner scanString:@"\"" intoString:nil]) + if (![scanner scanUpToString:@"\"" intoString: &album]) continue; - - if (![scanner scanUpToString:@"\"" intoString:titleDest]) + } else { + if (![scanner scanUpToString:@"\"" intoString: &title]) continue; + } } else if ([command isEqualToString:@"REM"]) { NSString *type; if (![scanner scanUpToCharactersFromSet:whitespace intoString:&type]) diff --git a/OrigamiEngine/Plugins/CueSheetContainer.m b/OrigamiEngine/Plugins/CueSheetContainer.m index c0fd673..456671f 100644 --- a/OrigamiEngine/Plugins/CueSheetContainer.m +++ b/OrigamiEngine/Plugins/CueSheetContainer.m @@ -47,7 +47,6 @@ + (NSArray *)urlsForContainerURL:(NSURL *)url { [tracks addObject:formattedUrl]; }]; - [cuesheet release]; return tracks; } diff --git a/OrigamiEngine/Plugins/CueSheetDecoder.m b/OrigamiEngine/Plugins/CueSheetDecoder.m index 79da4ed..4ad87f1 100644 --- a/OrigamiEngine/Plugins/CueSheetDecoder.m +++ b/OrigamiEngine/Plugins/CueSheetDecoder.m @@ -32,20 +32,15 @@ @interface CueSheetDecoder () { long trackStart; long trackEnd; } -@property (retain, nonatomic) id source; -@property (retain, nonatomic) id decoder; -@property (retain, nonatomic) CueSheet *cuesheet; +@property (strong, nonatomic) id source; +@property (strong, nonatomic) id decoder; +@property (strong, nonatomic) CueSheet *cuesheet; @end @implementation CueSheetDecoder - (void)dealloc { [self close]; - [_decoder release]; - [_source release]; - [_cuesheet release]; - - [super dealloc]; } #pragma mark - ORGMDecoder @@ -58,7 +53,7 @@ - (NSDictionary *)properties { NSMutableDictionary *properties = [[_decoder properties] mutableCopy]; [properties setObject:[NSNumber numberWithLong:(trackEnd - trackStart)] forKey:@"totalFrames"]; - return [properties autorelease]; + return properties; } - (NSDictionary *)metadata { @@ -94,7 +89,7 @@ - (int)readAudio:(void *)buf frames:(UInt32)frames { - (BOOL)open:(id)s { NSURL *url = [s url]; - self.cuesheet = [[[CueSheet alloc] initWithURL:url] autorelease]; + self.cuesheet = [[CueSheet alloc] initWithURL:url]; ORGMPluginManager *pluginManager = [ORGMPluginManager sharedManager]; for (int i = 0; i < _cuesheet.tracks.count; i++) { diff --git a/OrigamiEngine/Plugins/CueSheetTrack.h b/OrigamiEngine/Plugins/CueSheetTrack.h index dd59c89..4c83a24 100644 --- a/OrigamiEngine/Plugins/CueSheetTrack.h +++ b/OrigamiEngine/Plugins/CueSheetTrack.h @@ -22,7 +22,7 @@ // THE SOFTWARE. @interface CueSheetTrack : NSObject -@property (retain, nonatomic, readonly) NSURL *url; +@property (strong, nonatomic, readonly) NSURL *url; @property (copy, nonatomic, readonly) NSString *track; @property (copy, nonatomic, readonly) NSString *artist; @property (copy, nonatomic, readonly) NSString *album; diff --git a/OrigamiEngine/Plugins/CueSheetTrack.m b/OrigamiEngine/Plugins/CueSheetTrack.m index 1bc801d..93c636e 100644 --- a/OrigamiEngine/Plugins/CueSheetTrack.m +++ b/OrigamiEngine/Plugins/CueSheetTrack.m @@ -24,7 +24,7 @@ #import "CueSheetTrack.h" @interface CueSheetTrack () -@property (retain, nonatomic) NSURL *url; +@property (strong, nonatomic) NSURL *url; @property (copy, nonatomic) NSString *track; @property (copy, nonatomic) NSString *artist; @property (copy, nonatomic) NSString *album; @@ -45,14 +45,14 @@ + (id)trackWithURL:(NSURL *)url genre:(NSString *)genre year:(NSString *)year { - return [[[CueSheetTrack alloc] initWithURL:url + return [[CueSheetTrack alloc] initWithURL:url track:track time:seconds artist:artist album:album title:title genre:genre - year:year] autorelease]; + year:year]; } - (id)initWithURL:(NSURL *)url @@ -80,16 +80,4 @@ - (id)initWithURL:(NSURL *)url return self; } -- (void)dealloc { - [_track release]; - [_url release]; - [_artist release]; - [_album release]; - [_title release]; - [_genre release]; - [_year release]; - - [super dealloc]; -} - @end diff --git a/OrigamiEngine/Plugins/FileSource.m b/OrigamiEngine/Plugins/FileSource.m index 5a53879..7ed9b74 100644 --- a/OrigamiEngine/Plugins/FileSource.m +++ b/OrigamiEngine/Plugins/FileSource.m @@ -26,15 +26,13 @@ @interface FileSource () { FILE *_fd; } -@property (retain, nonatomic) NSURL *url; +@property (strong, nonatomic) NSURL *url; @end @implementation FileSource - (void)dealloc { [self close]; - [_url release]; - [super dealloc]; } #pragma mark - ORGMSource diff --git a/OrigamiEngine/Plugins/FlacDecoder.m b/OrigamiEngine/Plugins/FlacDecoder.m index 3010830..62b087d 100644 --- a/OrigamiEngine/Plugins/FlacDecoder.m +++ b/OrigamiEngine/Plugins/FlacDecoder.m @@ -39,8 +39,8 @@ @interface FlacDecoder () { long totalFrames; } -@property (retain, nonatomic) NSMutableDictionary *metadata; -@property (retain, nonatomic) id source; +@property (strong, nonatomic) NSMutableDictionary *metadata; +@property (strong, nonatomic) id source; @property (assign, nonatomic) BOOL endOfStream; - (FLAC__StreamDecoder *)decoder; @@ -56,9 +56,6 @@ @implementation FlacDecoder - (void)dealloc { [self close]; - [_metadata release]; - [source release]; - [super dealloc]; } #pragma mark - ORGMDecoder @@ -137,7 +134,7 @@ - (BOOL)open:(id)s { WriteCallback, MetadataCallback, ErrorCallback, - self + (__bridge void *)(self) ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) { return NO; } @@ -189,7 +186,7 @@ FLAC__StreamDecoderReadStatus ReadCallback(const FLAC__StreamDecoder *decoder, FLAC__byte blockBuffer[], size_t *bytes, void *client_data) { - FlacDecoder *flacDecoder = (FlacDecoder *)client_data; + FlacDecoder *flacDecoder = (__bridge FlacDecoder *)client_data; *bytes = [[flacDecoder source] read:blockBuffer amount:*bytes]; if(*bytes == 0) { @@ -204,7 +201,7 @@ FLAC__StreamDecoderReadStatus ReadCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderSeekStatus SeekCallback(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) { - FlacDecoder *flacDecoder = (FlacDecoder *)client_data; + FlacDecoder *flacDecoder = (__bridge FlacDecoder *)client_data; if(![[flacDecoder source] seek:(long)absolute_byte_offset whence:SEEK_SET]) return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; @@ -215,7 +212,7 @@ FLAC__StreamDecoderSeekStatus SeekCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderTellStatus TellCallback(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) { - FlacDecoder *flacDecoder = (FlacDecoder *)client_data; + FlacDecoder *flacDecoder = (__bridge FlacDecoder *)client_data; off_t pos; if((pos = [[flacDecoder source] tell]) < 0) { @@ -227,14 +224,14 @@ FLAC__StreamDecoderTellStatus TellCallback(const FLAC__StreamDecoder *decoder, } FLAC__bool EOFCallback(const FLAC__StreamDecoder *decoder, void *client_data) { - FlacDecoder *flacDecoder = (FlacDecoder *)client_data; + FlacDecoder *flacDecoder = (__bridge FlacDecoder *)client_data; return (FLAC__bool)[flacDecoder endOfStream]; } FLAC__StreamDecoderLengthStatus LengthCallback(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) { - FlacDecoder *flacDecoder = (FlacDecoder *)client_data; + FlacDecoder *flacDecoder = (__bridge FlacDecoder *)client_data; if ([[flacDecoder source] seekable]) { long currentPos = [[flacDecoder source] tell]; @@ -255,7 +252,7 @@ FLAC__StreamDecoderWriteStatus WriteCallback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const sampleblockBuffer[], void *client_data) { - FlacDecoder *flacDecoder = (FlacDecoder *)client_data; + FlacDecoder *flacDecoder = (__bridge FlacDecoder *)client_data; void *blockBuffer = [flacDecoder blockBuffer]; @@ -322,7 +319,7 @@ void MetadataCallback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) { if (metadata->type == FLAC__METADATA_TYPE_VORBIS_COMMENT) { - FlacDecoder *flacDecoder = (FlacDecoder *)client_data; + FlacDecoder *flacDecoder = (__bridge FlacDecoder *)client_data; FLAC__StreamMetadata_VorbisComment comment = metadata->data.vorbis_comment; FLAC__uint32 count = metadata->data.vorbis_comment.num_comments; for (int i = 0; i < count; i++) { @@ -334,13 +331,13 @@ void MetadataCallback(const FLAC__StreamDecoder *decoder, [flacDecoder.metadata setObject:value forKey:[key lowercaseString]]; } } else if (metadata->type == FLAC__METADATA_TYPE_PICTURE) { - FlacDecoder *flacDecoder = (FlacDecoder *)client_data; + FlacDecoder *flacDecoder = (__bridge FlacDecoder *)client_data; FLAC__StreamMetadata_Picture picture = metadata->data.picture; NSData *picture_data = [NSData dataWithBytes:picture.data length:picture.data_length]; [flacDecoder.metadata setObject:picture_data forKey:@"picture"]; } else if (metadata->type == FLAC__METADATA_TYPE_STREAMINFO) { - FlacDecoder *flacDecoder = (FlacDecoder *)client_data; + FlacDecoder *flacDecoder = (__bridge FlacDecoder *)client_data; flacDecoder->channels = metadata->data.stream_info.channels; flacDecoder->frequency = metadata->data.stream_info.sample_rate; diff --git a/OrigamiEngine/Plugins/HTTPSource.m b/OrigamiEngine/Plugins/HTTPSource.m index 57adb85..5cf9743 100644 --- a/OrigamiEngine/Plugins/HTTPSource.m +++ b/OrigamiEngine/Plugins/HTTPSource.m @@ -31,9 +31,9 @@ @interface HTTPSource () { BOOL _connectionDidFail; } -@property (retain, nonatomic) NSURLConnection *urlConnection; -@property (retain, nonatomic) NSMutableURLRequest *request; -@property (retain, nonatomic) NSFileHandle *fileHandle; +@property (strong, nonatomic) NSURLConnection *urlConnection; +@property (strong, nonatomic) NSMutableURLRequest *request; +@property (strong, nonatomic) NSFileHandle *fileHandle; @end @implementation HTTPSource @@ -43,11 +43,6 @@ @implementation HTTPSource - (void)dealloc { [self close]; [_fileHandle closeFile]; - [_fileHandle release]; - [_urlConnection release]; - [_request release]; - - [super dealloc]; } #pragma mark - ORGMSource @@ -72,7 +67,6 @@ - (BOOL)open:(NSURL *)url { delegate:self startImmediately:NO]; self.urlConnection = connection; - [connection release]; if ([NSThread isMainThread]) { [_urlConnection start]; diff --git a/OrigamiEngine/Plugins/OpusFileDecoder.m b/OrigamiEngine/Plugins/OpusFileDecoder.m index 869560c..ccf75ef 100644 --- a/OrigamiEngine/Plugins/OpusFileDecoder.m +++ b/OrigamiEngine/Plugins/OpusFileDecoder.m @@ -30,8 +30,8 @@ @interface OpusFileDecoder () { long totalFrames; } -@property (retain, nonatomic) NSMutableDictionary *metadata; -@property (retain, nonatomic) id source; +@property (strong, nonatomic) NSMutableDictionary *metadata; +@property (strong, nonatomic) id source; @end @@ -40,9 +40,6 @@ @implementation OpusFileDecoder - (void)dealloc { [self close]; - [_metadata release]; - [source release]; - [super dealloc]; } #pragma mark - ORGMDecoder @@ -87,7 +84,7 @@ - (BOOL)open:(id)s { }; int rc; - decoder = op_open_callbacks(source, &callbacks, NULL, 0, &rc); + decoder = op_open_callbacks((__bridge void *)(source), &callbacks, NULL, 0, &rc); if (rc != 0) return NO; @@ -143,20 +140,20 @@ - (void)parseMetadata { static int ReadCallback(void *stream, unsigned char *ptr, int nbytes) { - id source = stream; + id source = (__bridge id)(stream); int result = [source read:ptr amount:nbytes]; return result; } static int SeekCallback(void *stream, opus_int64 offset, int whence) { - id source = stream; + id source = (__bridge id)(stream); return [source seek:(long)offset whence:whence] ? 0 : -1; } static opus_int64 TellCallback(void *stream) { - id source = stream; + id source = (__bridge id)(stream); return [source tell]; } From 0724ecdd8beea49e24b7f8a1682e66b6b889e080 Mon Sep 17 00:00:00 2001 From: Khaitu Date: Tue, 14 Mar 2017 18:09:44 +0000 Subject: [PATCH 2/4] Updated podspec --- OrigamiEngine.podspec | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OrigamiEngine.podspec b/OrigamiEngine.podspec index 3e8f31e..4131b80 100644 --- a/OrigamiEngine.podspec +++ b/OrigamiEngine.podspec @@ -1,13 +1,13 @@ Pod::Spec.new do |s| s.name = "OrigamiEngine" - s.version = "1.0.14" + s.version = "1.0.15" s.summary = "Lightweight iOS/OSX audio engine with flac, cue, mp3, m4a, m3u support." - s.homepage = "https://github.com/ap4y/OrigamiEngine.git" + s.homepage = "https://github.com/khaitu/OrigamiEngine.git" s.license = 'MIT' s.author = { "ap4y" => "lod@pisem.net" } - s.source = { :git => "https://github.com/ap4y/OrigamiEngine.git", :tag => "1.0.14", :submodules => true } + s.source = { :git => "https://github.com/khaitu/OrigamiEngine.git", :tag => "1.0.14", :submodules => true } s.default_subspec = 'Core' - s.requires_arc = false + s.requires_arc = true s.ios.deployment_target = '5.0' s.osx.deployment_target = '10.7' From 70b70d5dcfc6a3e32132376903ecb347f6660814 Mon Sep 17 00:00:00 2001 From: Khaitu Date: Wed, 15 Mar 2017 13:08:40 +0000 Subject: [PATCH 3/4] Updated podspec for arc and bumped version number --- OrigamiEngine.podspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OrigamiEngine.podspec b/OrigamiEngine.podspec index 4131b80..a18f08b 100644 --- a/OrigamiEngine.podspec +++ b/OrigamiEngine.podspec @@ -2,10 +2,10 @@ Pod::Spec.new do |s| s.name = "OrigamiEngine" s.version = "1.0.15" s.summary = "Lightweight iOS/OSX audio engine with flac, cue, mp3, m4a, m3u support." - s.homepage = "https://github.com/khaitu/OrigamiEngine.git" + s.homepage = "https://github.com/ap4y/OrigamiEngine.git" s.license = 'MIT' s.author = { "ap4y" => "lod@pisem.net" } - s.source = { :git => "https://github.com/khaitu/OrigamiEngine.git", :tag => "1.0.14", :submodules => true } + s.source = { :git => "https://github.com/ap4y/OrigamiEngine.git", :tag => "1.0.15", :submodules => true } s.default_subspec = 'Core' s.requires_arc = true s.ios.deployment_target = '5.0' From bfdd4481f19c5895ba16115defd99c76a7e6e84b Mon Sep 17 00:00:00 2001 From: Khaitu Date: Wed, 15 Mar 2017 13:11:58 +0000 Subject: [PATCH 4/4] Removed xcode project data which should not be in the repository --- .../contents.xcworkspacedata | 7 -- .../UserInterfaceState.xcuserstate | Bin 39016 -> 0 bytes .../WorkspaceSettings.xcsettings | 16 ---- .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 -- .../xcschemes/OrigamiEngine.xcscheme | 80 ------------------ .../xcschemes/OrigamiEngineMac.xcscheme | 80 ------------------ .../xcschemes/OrigamiEngineTests.xcscheme | 80 ------------------ .../xcschemes/xcschememanagement.plist | 42 --------- 8 files changed, 310 deletions(-) delete mode 100644 OrigamiEngine.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 OrigamiEngine.xcodeproj/project.xcworkspace/xcuserdata/tom.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 OrigamiEngine.xcodeproj/project.xcworkspace/xcuserdata/tom.xcuserdatad/WorkspaceSettings.xcsettings delete mode 100644 OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100644 OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngine.xcscheme delete mode 100644 OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineMac.xcscheme delete mode 100644 OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineTests.xcscheme delete mode 100644 OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/OrigamiEngine.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/OrigamiEngine.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/OrigamiEngine.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/OrigamiEngine.xcodeproj/project.xcworkspace/xcuserdata/tom.xcuserdatad/UserInterfaceState.xcuserstate b/OrigamiEngine.xcodeproj/project.xcworkspace/xcuserdata/tom.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 7703143c26f9ac925961876909999f29ef6b983b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39016 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 - - - - BuildLocationStyle - UseAppPreferences - CustomBuildLocationType - RelativeToDerivedData - DerivedDataLocationStyle - Default - IssueFilterStyle - ShowActiveSchemeOnly - LiveSourceIssuesEnabled - - - diff --git a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index fe2b454..0000000 --- a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngine.xcscheme b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngine.xcscheme deleted file mode 100644 index 59d9adf..0000000 --- a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngine.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineMac.xcscheme b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineMac.xcscheme deleted file mode 100644 index fbde5d9..0000000 --- a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineMac.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineTests.xcscheme b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineTests.xcscheme deleted file mode 100644 index d8ec440..0000000 --- a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/OrigamiEngineTests.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/xcschememanagement.plist b/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index fd9d392..0000000 --- a/OrigamiEngine.xcodeproj/xcuserdata/tom.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,42 +0,0 @@ - - - - - SchemeUserState - - OrigamiEngine.xcscheme - - orderHint - 0 - - OrigamiEngineMac.xcscheme - - orderHint - 1 - - OrigamiEngineTests.xcscheme - - orderHint - 2 - - - SuppressBuildableAutocreation - - 9502C28D16C591C00054F4E3 - - primary - - - 959B580815CEE13C00D44955 - - primary - - - 959B581915CEE13C00D44955 - - primary - - - - -