Selaa lähdekoodia

版本升级维护

yyqxiaoyin 5 vuotta sitten
vanhempi
commit
31a0529616

+ 1 - 0
Example/Pods/Headers/Private/MKRRadioManager/NSHashTable+MKRRadioManagerAdd.h

@@ -0,0 +1 @@
+../../../../../MKRRadioManager/Classes/MKRRadioManager/Category/NSHashTable+MKRRadioManagerAdd.h

+ 1 - 0
Example/Pods/Headers/Public/MKRRadioManager/NSHashTable+MKRRadioManagerAdd.h

@@ -0,0 +1 @@
+../../../../../MKRRadioManager/Classes/MKRRadioManager/Category/NSHashTable+MKRRadioManagerAdd.h

+ 201 - 193
Example/Pods/Pods.xcodeproj/project.pbxproj

@@ -7,29 +7,31 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		0A4A8FC98483C9572DDC1C0169D8FFA3 /* MKRPlayResourceStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 33C12A9F21DFBF75D3924A3DADE7BF6C /* MKRPlayResourceStatus.h */; settings = {ATTRIBUTES = (Project, ); }; };
-		14FB948C203432D8005A0D4C3A35D4E6 /* MKRAVPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = E45769C87AB38717837EABBFCE9746B5 /* MKRAVPlayer.h */; settings = {ATTRIBUTES = (Project, ); }; };
-		23C65CA3FD798CDB432B7CF74972020F /* UIDevice+MKRRadioManagerAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 245A5030587E3967D35FCEFCF591557D /* UIDevice+MKRRadioManagerAdd.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
-		276D752C5F536C68B0A169C1F8660611 /* MKRPlayControlProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D8A4EEBC303EBF1080E76BFFA879FC9A /* MKRPlayControlProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; };
-		31CF2C2595ECABE699A957E0A6AF1B04 /* MKRRadioManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EB4FF2DAB1B7F88488436285CF33DF9 /* MKRRadioManager-dummy.m */; };
-		31F1516EFF05AB33420A4B43D0CEC31C /* MKRWIFIDeviceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 14DD5B7CB7994B3A259CEB2EE88152FB /* MKRWIFIDeviceManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
-		39AE3A3BC23F9EF5B3410B36CD060058 /* MKRRadioResorce.h in Headers */ = {isa = PBXBuildFile; fileRef = B29BCAB95ACFE0E8F64F1AEFEC4F825C /* MKRRadioResorce.h */; settings = {ATTRIBUTES = (Project, ); }; };
-		3C5EBCFCC7E14E833D067CA786EA43ED /* MKRUPnPDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 381EB66DDF7B5F77B1D0B862B8E2CF6F /* MKRUPnPDevice.h */; settings = {ATTRIBUTES = (Project, ); }; };
-		3EB68E3D2608414A7ADA0F145BC0FEC7 /* MKRM3UListModel.h in Headers */ = {isa = PBXBuildFile; fileRef = EF0CAFA2C66F652D26AD9E254508FE6C /* MKRM3UListModel.h */; settings = {ATTRIBUTES = (Project, ); }; };
-		48857C2E029C6B8B0615B4E0838DF55F /* UIDevice+MKRRadioManagerAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 314453F1F2BFDE2F4D43806B178E6D49 /* UIDevice+MKRRadioManagerAdd.h */; settings = {ATTRIBUTES = (Project, ); }; };
-		59F25FA838253B8009D9214AAE118BEB /* NSString+MKRRadioManagerAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = FA135935217597C95874294429AE7FC4 /* NSString+MKRRadioManagerAdd.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		0752174CC9F1F4113A6210CBB5FC7A4C /* MKRPlayResourceStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AA1A956416BC1D7FFC0718B5035FD63 /* MKRPlayResourceStatus.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		0F6E23F3DBCECE9F29D7DD4F680682AD /* MKRAVPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = A8390A03A70704EC0B214392D9672490 /* MKRAVPlayer.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		10398C5F92AA80197639284CFECDBE99 /* MKRRadioPlayControlManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 385E37EDF7823B4E9832BF3581D76D6E /* MKRRadioPlayControlManager.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		11F7FF31466FB609821E6C4F77FC7236 /* UIDevice+MKRRadioManagerAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 533CCCD38DB6EE88B8D5E4FAA86B6BD2 /* UIDevice+MKRRadioManagerAdd.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		1A8323CF539CBCCADBBB73D5CA7E1105 /* MKRM3UListModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AF5219E1E148D6E032029326B64B3E2 /* MKRM3UListModel.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		292CB70D81DC98F1018724C91F561BDF /* NSString+MKRRadioManagerAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = A9934F92A7CB3482A27D00A94EC7D8B2 /* NSString+MKRRadioManagerAdd.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		3E23680680DCE587CF61556E57629E68 /* MKRRadioResorce.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BB9727670642AF7D4F646045D19DEF6 /* MKRRadioResorce.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		45DA105594C15A9F9152CB6BB3F97FDA /* MKRAVPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 079DC5A4E08F53E591F236C06C06D758 /* MKRAVPlayer.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		51C9B21F896349CA28C9E335791E9F06 /* MKRPlayControlProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 883013C7C5BB118683BBD20144861EBF /* MKRPlayControlProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		5B772CFA77D3DEF9BF8E1E660A40B27C /* Pods-MKRRadioManager_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 67A27EF511B5E329BE070EE369797EAE /* Pods-MKRRadioManager_Tests-dummy.m */; };
-		818745858ED3B4A3DD4D3FFC95EA16DA /* MKRPlayResourceUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = ACEA8B442741E84850A3FF41EFE212EF /* MKRPlayResourceUpdateProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; };
-		8B1F3B8F3D1F68C78FC3D85CE7A9C511 /* NSString+MKRRadioManagerAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = FA864D776144B4F6AACED58315B12870 /* NSString+MKRRadioManagerAdd.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
-		9189303E592C1DF3FE220CF678B77834 /* MKRPlayResourceStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = C61A0051DEEF2EBA0B1A83DBF9CD94C2 /* MKRPlayResourceStatus.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		6BA4D3D198020D9B811A41599311D164 /* NSHashTable+MKRRadioManagerAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 073733C90A82FC2B771BEC007FE83B66 /* NSHashTable+MKRRadioManagerAdd.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		8101E2571829444DB7DD53A4F747504A /* MKRRadioResorce.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BDA1FEEC4D5826AE7BBB46A8C737D9D /* MKRRadioResorce.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		81CCE14F2B0B2A696EBEF16CFC53D662 /* MKRWIFIDeviceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EE580B0EF20D8B485C9C209A3AAF8325 /* MKRWIFIDeviceManager.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		92E01E9BD33817D849DE6280771C9BA9 /* Pods-MKRRadioManager_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 836A525BA09B96BD81D742372D1E8654 /* Pods-MKRRadioManager_Example-dummy.m */; };
-		AF1582148CBE0BEA205DF4A56A5E9C38 /* MKRM3UListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3383350AD31F3C178FF09C0A1F4CE354 /* MKRM3UListModel.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
-		B3CD70B6BDAB92D25E131E23D01F40B8 /* MKRResoureEnumHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 041AB5E197334DF6D05D68DB429D9319 /* MKRResoureEnumHeader.h */; settings = {ATTRIBUTES = (Project, ); }; };
-		C13625A3B9F30DC26369F14F4F4EC993 /* MKRRadioPlayControlManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 660537383F3787545F84344EAC713052 /* MKRRadioPlayControlManager.h */; settings = {ATTRIBUTES = (Project, ); }; };
-		C48B835DD9348CEF4E9A6D03F7BD3639 /* MKRWIFIDeviceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C65E17BC783D69092A89445F0CFD649F /* MKRWIFIDeviceManager.h */; settings = {ATTRIBUTES = (Project, ); }; };
-		D4C437E314AB55FFBA24146881A651FB /* MKRRadioResorce.m in Sources */ = {isa = PBXBuildFile; fileRef = EBDC56F88078571B31464A966127F1C7 /* MKRRadioResorce.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
-		D525AA395CD55D1F438345300A3BD431 /* MKRAVPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = B959207141AAB16EEEF2884B714A63C7 /* MKRAVPlayer.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
-		D94E65EBD523E887514B4FB6D781FD80 /* MKRUPnPDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = D06205284FC535604DB6C172C937C5A2 /* MKRUPnPDevice.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		A5263DC946CA5202BCCD3DC132671E45 /* MKRResoureEnumHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = A13F50D144D7080A15FB38A66367887F /* MKRResoureEnumHeader.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		B60522713DDDE3CD23792F11F716F20E /* MKRPlayResourceStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F0AEDBF3FAB72292AB5B36BE659C585 /* MKRPlayResourceStatus.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		C0A5986288CA046BFAC0A0862E0221AD /* MKRUPnPDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA1BCA3761F5CFDEAD599760D731385 /* MKRUPnPDevice.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		C351F794FC8535E194CA0CB2D4F7A799 /* NSString+MKRRadioManagerAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = B4AC12DE36FF4CEBCF2FEE6F70A86ACE /* NSString+MKRRadioManagerAdd.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		CE34E163C0B43A59CFC7F7A1F47BC59C /* UIDevice+MKRRadioManagerAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = E167188D753BD7CF5F1DAEAD4CE9BC2A /* UIDevice+MKRRadioManagerAdd.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		E05A599D4D5337CFF6FAC62D3DAB8F38 /* MKRM3UListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B17DA3E1589F95F1BB04C051A0BF7E2 /* MKRM3UListModel.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		E7A7E8C276DDB8D02889A5C7C625CA86 /* MKRPlayResourceUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 06B88CAEDB53D77F3109D0D93F898E44 /* MKRPlayResourceUpdateProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		EB0C5B1F5D6FC26438DDF5881D4A51E5 /* MKRWIFIDeviceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B4508752581AF105F4698A97BDA686D /* MKRWIFIDeviceManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		EBEFFFBEC96104520379C4348BA69CA0 /* NSHashTable+MKRRadioManagerAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B42CA92007F4A296A558E90C35A4D7F5 /* NSHashTable+MKRRadioManagerAdd.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
+		EBFC9E2EE8989CCB9EC7ABEED595976B /* MKRUPnPDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D2ED6AF2CB32499AA6847AA06885995 /* MKRUPnPDevice.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		FDB8574CF68AB36EBD686A60AE583BA1 /* MKRRadioManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 86BDF85C8549718E16ECD88E32D5BF5D /* MKRRadioManager-dummy.m */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -50,53 +52,55 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
-		041AB5E197334DF6D05D68DB429D9319 /* MKRResoureEnumHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRResoureEnumHeader.h; sourceTree = "<group>"; };
-		14DD5B7CB7994B3A259CEB2EE88152FB /* MKRWIFIDeviceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRWIFIDeviceManager.m; sourceTree = "<group>"; };
-		245A5030587E3967D35FCEFCF591557D /* UIDevice+MKRRadioManagerAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+MKRRadioManagerAdd.m"; sourceTree = "<group>"; };
-		2EB4FF2DAB1B7F88488436285CF33DF9 /* MKRRadioManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MKRRadioManager-dummy.m"; sourceTree = "<group>"; };
-		314453F1F2BFDE2F4D43806B178E6D49 /* UIDevice+MKRRadioManagerAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIDevice+MKRRadioManagerAdd.h"; sourceTree = "<group>"; };
-		3383350AD31F3C178FF09C0A1F4CE354 /* MKRM3UListModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRM3UListModel.m; sourceTree = "<group>"; };
-		33C12A9F21DFBF75D3924A3DADE7BF6C /* MKRPlayResourceStatus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRPlayResourceStatus.h; sourceTree = "<group>"; };
-		381EB66DDF7B5F77B1D0B862B8E2CF6F /* MKRUPnPDevice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRUPnPDevice.h; sourceTree = "<group>"; };
+		06B88CAEDB53D77F3109D0D93F898E44 /* MKRPlayResourceUpdateProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRPlayResourceUpdateProtocol.h; sourceTree = "<group>"; };
+		073733C90A82FC2B771BEC007FE83B66 /* NSHashTable+MKRRadioManagerAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSHashTable+MKRRadioManagerAdd.h"; sourceTree = "<group>"; };
+		079DC5A4E08F53E591F236C06C06D758 /* MKRAVPlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRAVPlayer.h; sourceTree = "<group>"; };
+		0B6FB2D3DD3686DF3E6EB82FFEC34783 /* MKRRadioManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MKRRadioManager-prefix.pch"; sourceTree = "<group>"; };
+		1B4508752581AF105F4698A97BDA686D /* MKRWIFIDeviceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRWIFIDeviceManager.m; sourceTree = "<group>"; };
+		21F28AE3B763D4D83DE9C9D2C532EB32 /* MKRRadioManager.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = MKRRadioManager.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+		2BB9727670642AF7D4F646045D19DEF6 /* MKRRadioResorce.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MKRRadioResorce.m; path = MKRRadioManager/Classes/MKRRadioManager/MKRRadioResorce.m; sourceTree = "<group>"; };
+		385E37EDF7823B4E9832BF3581D76D6E /* MKRRadioPlayControlManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRRadioPlayControlManager.h; sourceTree = "<group>"; };
 		38CBECD3E13B6E8C07C54FD39ED9B21F /* Pods-MKRRadioManager_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MKRRadioManager_Example-acknowledgements.plist"; sourceTree = "<group>"; };
+		450D8D4FFEF0E114209CA29D1A2CE838 /* libUPNP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libUPNP.framework; path = libs/libUPNP.framework; sourceTree = "<group>"; };
 		4624903CB75A92FD828681E070A96BA5 /* libMKRRadioManager.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMKRRadioManager.a; path = libMKRRadioManager.a; sourceTree = BUILT_PRODUCTS_DIR; };
-		5672330A199DFCDE1E8C52ADFF12530E /* libAS-Control.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "libAS-Control.framework"; path = "libs/libAS-Control.framework"; sourceTree = "<group>"; };
+		47E8ECEFE30CC53FAA5DE9059EFCCA03 /* libAS-Control.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "libAS-Control.framework"; path = "libs/libAS-Control.framework"; sourceTree = "<group>"; };
+		4AF5219E1E148D6E032029326B64B3E2 /* MKRM3UListModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRM3UListModel.h; sourceTree = "<group>"; };
+		4EA1BCA3761F5CFDEAD599760D731385 /* MKRUPnPDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRUPnPDevice.m; sourceTree = "<group>"; };
+		4F0AEDBF3FAB72292AB5B36BE659C585 /* MKRPlayResourceStatus.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRPlayResourceStatus.m; sourceTree = "<group>"; };
+		533CCCD38DB6EE88B8D5E4FAA86B6BD2 /* UIDevice+MKRRadioManagerAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+MKRRadioManagerAdd.m"; sourceTree = "<group>"; };
 		5D5404FE9A358D93FBCF9F384ABC2AEA /* Pods-MKRRadioManager_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MKRRadioManager_Example.release.xcconfig"; sourceTree = "<group>"; };
-		660537383F3787545F84344EAC713052 /* MKRRadioPlayControlManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRRadioPlayControlManager.h; sourceTree = "<group>"; };
 		6606738F4C31335C6DE5483A861BF122 /* Pods-MKRRadioManager_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MKRRadioManager_Tests-acknowledgements.plist"; sourceTree = "<group>"; };
 		67A27EF511B5E329BE070EE369797EAE /* Pods-MKRRadioManager_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MKRRadioManager_Tests-dummy.m"; sourceTree = "<group>"; };
-		6A0F8C08411C5216E354F82CC11F5B58 /* openssl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = openssl.framework; path = libs/openssl.framework; sourceTree = "<group>"; };
-		6D4552C022ACCBC59172428F49F15942 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = "<group>"; };
-		7D761CD55AFD8ADD25A5EF7FEFF119FE /* libUPNP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libUPNP.framework; path = libs/libUPNP.framework; sourceTree = "<group>"; };
+		68899B02239354B7E74A8091314E78A1 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = "<group>"; };
+		6AA1A956416BC1D7FFC0718B5035FD63 /* MKRPlayResourceStatus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRPlayResourceStatus.h; sourceTree = "<group>"; };
+		6B17DA3E1589F95F1BB04C051A0BF7E2 /* MKRM3UListModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRM3UListModel.m; sourceTree = "<group>"; };
+		6BDA1FEEC4D5826AE7BBB46A8C737D9D /* MKRRadioResorce.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MKRRadioResorce.h; path = MKRRadioManager/Classes/MKRRadioManager/MKRRadioResorce.h; sourceTree = "<group>"; };
 		8169495D23E6F2568FB3BB68CFB40D97 /* Pods-MKRRadioManager_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MKRRadioManager_Example-acknowledgements.markdown"; sourceTree = "<group>"; };
 		836A525BA09B96BD81D742372D1E8654 /* Pods-MKRRadioManager_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MKRRadioManager_Example-dummy.m"; sourceTree = "<group>"; };
 		838E1E2CBE39C6A523090D0FA57A4C23 /* libPods-MKRRadioManager_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-MKRRadioManager_Tests.a"; path = "libPods-MKRRadioManager_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
-		8751D3FD3BBED87FBE9BA05062127D36 /* MKRRadioManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MKRRadioManager-prefix.pch"; sourceTree = "<group>"; };
+		86BDF85C8549718E16ECD88E32D5BF5D /* MKRRadioManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MKRRadioManager-dummy.m"; sourceTree = "<group>"; };
+		883013C7C5BB118683BBD20144861EBF /* MKRPlayControlProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRPlayControlProtocol.h; sourceTree = "<group>"; };
 		89DEBFD829CC1938B0AF05C60C1D8866 /* libPods-MKRRadioManager_Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-MKRRadioManager_Example.a"; path = "libPods-MKRRadioManager_Example.a"; sourceTree = BUILT_PRODUCTS_DIR; };
-		93EE0177C1B62D6B6660F63A90E06A61 /* MKRRadioManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MKRRadioManager.xcconfig; sourceTree = "<group>"; };
+		8C2EC73E9651853B15DA5C28D0B5F928 /* openssl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = openssl.framework; path = libs/openssl.framework; sourceTree = "<group>"; };
+		8D2ED6AF2CB32499AA6847AA06885995 /* MKRUPnPDevice.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRUPnPDevice.h; sourceTree = "<group>"; };
 		9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
-		ACEA8B442741E84850A3FF41EFE212EF /* MKRPlayResourceUpdateProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRPlayResourceUpdateProtocol.h; sourceTree = "<group>"; };
+		A13F50D144D7080A15FB38A66367887F /* MKRResoureEnumHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRResoureEnumHeader.h; sourceTree = "<group>"; };
+		A26B77F91ECB3BD7C7FA66128982C3FF /* MKRRadioManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MKRRadioManager.xcconfig; sourceTree = "<group>"; };
+		A8390A03A70704EC0B214392D9672490 /* MKRAVPlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRAVPlayer.m; sourceTree = "<group>"; };
+		A9934F92A7CB3482A27D00A94EC7D8B2 /* NSString+MKRRadioManagerAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSString+MKRRadioManagerAdd.m"; sourceTree = "<group>"; };
 		ADD6016F3760993E4FE00B435C3A1AAE /* Pods-MKRRadioManager_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MKRRadioManager_Tests.release.xcconfig"; sourceTree = "<group>"; };
-		B29BCAB95ACFE0E8F64F1AEFEC4F825C /* MKRRadioResorce.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MKRRadioResorce.h; path = MKRRadioManager/Classes/MKRRadioManager/MKRRadioResorce.h; sourceTree = "<group>"; };
-		B959207141AAB16EEEF2884B714A63C7 /* MKRAVPlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRAVPlayer.m; sourceTree = "<group>"; };
+		B42CA92007F4A296A558E90C35A4D7F5 /* NSHashTable+MKRRadioManagerAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSHashTable+MKRRadioManagerAdd.m"; sourceTree = "<group>"; };
+		B4AC12DE36FF4CEBCF2FEE6F70A86ACE /* NSString+MKRRadioManagerAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSString+MKRRadioManagerAdd.h"; sourceTree = "<group>"; };
 		C4A35313AD83C01E57EA1815AEA6BC5C /* Pods-MKRRadioManager_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MKRRadioManager_Example.debug.xcconfig"; sourceTree = "<group>"; };
-		C61A0051DEEF2EBA0B1A83DBF9CD94C2 /* MKRPlayResourceStatus.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRPlayResourceStatus.m; sourceTree = "<group>"; };
-		C65E17BC783D69092A89445F0CFD649F /* MKRWIFIDeviceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRWIFIDeviceManager.h; sourceTree = "<group>"; };
-		D06205284FC535604DB6C172C937C5A2 /* MKRUPnPDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MKRUPnPDevice.m; sourceTree = "<group>"; };
-		D6B2F2F23A1A9169C141FDF274D57F02 /* MKRRadioManager.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = MKRRadioManager.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
-		D8A4EEBC303EBF1080E76BFFA879FC9A /* MKRPlayControlProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRPlayControlProtocol.h; sourceTree = "<group>"; };
-		E45769C87AB38717837EABBFCE9746B5 /* MKRAVPlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRAVPlayer.h; sourceTree = "<group>"; };
-		EBDC56F88078571B31464A966127F1C7 /* MKRRadioResorce.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MKRRadioResorce.m; path = MKRRadioManager/Classes/MKRRadioManager/MKRRadioResorce.m; sourceTree = "<group>"; };
-		ED2510F6DF7B06417B41647CD2BE75E3 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = "<group>"; };
-		EF0CAFA2C66F652D26AD9E254508FE6C /* MKRM3UListModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRM3UListModel.h; sourceTree = "<group>"; };
+		E167188D753BD7CF5F1DAEAD4CE9BC2A /* UIDevice+MKRRadioManagerAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIDevice+MKRRadioManagerAdd.h"; sourceTree = "<group>"; };
+		EE580B0EF20D8B485C9C209A3AAF8325 /* MKRWIFIDeviceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MKRWIFIDeviceManager.h; sourceTree = "<group>"; };
+		EFBEB724A7C46694A8AC151A929B3C28 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = "<group>"; };
 		F53C1E652AFD7038B717B14F08A1A2EC /* Pods-MKRRadioManager_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MKRRadioManager_Tests-acknowledgements.markdown"; sourceTree = "<group>"; };
-		FA135935217597C95874294429AE7FC4 /* NSString+MKRRadioManagerAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSString+MKRRadioManagerAdd.h"; sourceTree = "<group>"; };
-		FA864D776144B4F6AACED58315B12870 /* NSString+MKRRadioManagerAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSString+MKRRadioManagerAdd.m"; sourceTree = "<group>"; };
 		FE9441B2BC00597A4F90F43AB9E188A9 /* Pods-MKRRadioManager_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MKRRadioManager_Tests.debug.xcconfig"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
-		7A3F7BCE03D07B7B40A062F05F52931B /* Frameworks */ = {
+		84F1327F252E09DF90513EC47D28E347 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
@@ -120,18 +124,6 @@
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
-		0A60B2094387EA81F741F23E9800FAE9 /* Category */ = {
-			isa = PBXGroup;
-			children = (
-				FA135935217597C95874294429AE7FC4 /* NSString+MKRRadioManagerAdd.h */,
-				FA864D776144B4F6AACED58315B12870 /* NSString+MKRRadioManagerAdd.m */,
-				314453F1F2BFDE2F4D43806B178E6D49 /* UIDevice+MKRRadioManagerAdd.h */,
-				245A5030587E3967D35FCEFCF591557D /* UIDevice+MKRRadioManagerAdd.m */,
-			);
-			name = Category;
-			path = MKRRadioManager/Classes/MKRRadioManager/Category;
-			sourceTree = "<group>";
-		};
 		0B21C33FCE0C78E442D9723AD83947FC /* Targets Support Files */ = {
 			isa = PBXGroup;
 			children = (
@@ -141,26 +133,28 @@
 			name = "Targets Support Files";
 			sourceTree = "<group>";
 		};
-		14375576F995CB0028FC52E2EE1FFCAE /* Headers */ = {
+		2B20D9AC51B45A8395E33079D2A9D297 /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
-				D8A4EEBC303EBF1080E76BFFA879FC9A /* MKRPlayControlProtocol.h */,
-				ACEA8B442741E84850A3FF41EFE212EF /* MKRPlayResourceUpdateProtocol.h */,
-				660537383F3787545F84344EAC713052 /* MKRRadioPlayControlManager.h */,
-				041AB5E197334DF6D05D68DB429D9319 /* MKRResoureEnumHeader.h */,
+				47E8ECEFE30CC53FAA5DE9059EFCCA03 /* libAS-Control.framework */,
+				450D8D4FFEF0E114209CA29D1A2CE838 /* libUPNP.framework */,
+				8C2EC73E9651853B15DA5C28D0B5F928 /* openssl.framework */,
 			);
-			name = Headers;
-			path = MKRRadioManager/Classes/MKRRadioManager/Headers;
+			name = Frameworks;
 			sourceTree = "<group>";
 		};
-		19D2473DE3033FCB868D8C2F6F20858D /* Frameworks */ = {
+		2DDB8AC53BB55B932A885038BA44B5FD /* Category */ = {
 			isa = PBXGroup;
 			children = (
-				5672330A199DFCDE1E8C52ADFF12530E /* libAS-Control.framework */,
-				7D761CD55AFD8ADD25A5EF7FEFF119FE /* libUPNP.framework */,
-				6A0F8C08411C5216E354F82CC11F5B58 /* openssl.framework */,
+				073733C90A82FC2B771BEC007FE83B66 /* NSHashTable+MKRRadioManagerAdd.h */,
+				B42CA92007F4A296A558E90C35A4D7F5 /* NSHashTable+MKRRadioManagerAdd.m */,
+				B4AC12DE36FF4CEBCF2FEE6F70A86ACE /* NSString+MKRRadioManagerAdd.h */,
+				A9934F92A7CB3482A27D00A94EC7D8B2 /* NSString+MKRRadioManagerAdd.m */,
+				E167188D753BD7CF5F1DAEAD4CE9BC2A /* UIDevice+MKRRadioManagerAdd.h */,
+				533CCCD38DB6EE88B8D5E4FAA86B6BD2 /* UIDevice+MKRRadioManagerAdd.m */,
 			);
-			name = Frameworks;
+			name = Category;
+			path = MKRRadioManager/Classes/MKRRadioManager/Category;
 			sourceTree = "<group>";
 		};
 		453202A8AB343905F5CA15A3A58D87D7 /* Products */ = {
@@ -186,64 +180,90 @@
 			path = "Target Support Files/Pods-MKRRadioManager_Example";
 			sourceTree = "<group>";
 		};
-		546BD169817E80782CE26C4E162322A2 /* MKRRadioManager */ = {
+		62FEBB1D7D89A394140F28A5C218301A /* MKRRadioManager */ = {
 			isa = PBXGroup;
 			children = (
-				B29BCAB95ACFE0E8F64F1AEFEC4F825C /* MKRRadioResorce.h */,
-				EBDC56F88078571B31464A966127F1C7 /* MKRRadioResorce.m */,
-				0A60B2094387EA81F741F23E9800FAE9 /* Category */,
-				19D2473DE3033FCB868D8C2F6F20858D /* Frameworks */,
-				14375576F995CB0028FC52E2EE1FFCAE /* Headers */,
-				961A191DAFF3AABC908F7A7FAAB53537 /* MKRAVPlayer */,
-				D7A009714AFA0F336541A925109DB010 /* MKRWIFIDeviceManager */,
-				93B674C571E33AA5F59F1B2E9F3A22A5 /* Pod */,
-				893101FECA50D7B64131199B969CD94B /* Support Files */,
+				6BDA1FEEC4D5826AE7BBB46A8C737D9D /* MKRRadioResorce.h */,
+				2BB9727670642AF7D4F646045D19DEF6 /* MKRRadioResorce.m */,
+				2DDB8AC53BB55B932A885038BA44B5FD /* Category */,
+				2B20D9AC51B45A8395E33079D2A9D297 /* Frameworks */,
+				B023ED3F9E5FF5312C8C83114ED48E2C /* Headers */,
+				6A8B740B9078EC57C7D8234CCAFC1E38 /* MKRAVPlayer */,
+				A3BEDFBD84689AF4C51B2FC4D3A8FC55 /* MKRWIFIDeviceManager */,
+				BAB1652174D34CCCF2BDD7816ADA129E /* Pod */,
+				76B247EFCA5D26718DE4BD45F43CDD5D /* Support Files */,
 			);
 			name = MKRRadioManager;
 			path = ../..;
 			sourceTree = "<group>";
 		};
-		893101FECA50D7B64131199B969CD94B /* Support Files */ = {
+		6A8B740B9078EC57C7D8234CCAFC1E38 /* MKRAVPlayer */ = {
+			isa = PBXGroup;
+			children = (
+				079DC5A4E08F53E591F236C06C06D758 /* MKRAVPlayer.h */,
+				A8390A03A70704EC0B214392D9672490 /* MKRAVPlayer.m */,
+				6AA1A956416BC1D7FFC0718B5035FD63 /* MKRPlayResourceStatus.h */,
+				4F0AEDBF3FAB72292AB5B36BE659C585 /* MKRPlayResourceStatus.m */,
+			);
+			name = MKRAVPlayer;
+			path = MKRRadioManager/Classes/MKRRadioManager/MKRAVPlayer;
+			sourceTree = "<group>";
+		};
+		76B247EFCA5D26718DE4BD45F43CDD5D /* Support Files */ = {
 			isa = PBXGroup;
 			children = (
-				93EE0177C1B62D6B6660F63A90E06A61 /* MKRRadioManager.xcconfig */,
-				2EB4FF2DAB1B7F88488436285CF33DF9 /* MKRRadioManager-dummy.m */,
-				8751D3FD3BBED87FBE9BA05062127D36 /* MKRRadioManager-prefix.pch */,
+				A26B77F91ECB3BD7C7FA66128982C3FF /* MKRRadioManager.xcconfig */,
+				86BDF85C8549718E16ECD88E32D5BF5D /* MKRRadioManager-dummy.m */,
+				0B6FB2D3DD3686DF3E6EB82FFEC34783 /* MKRRadioManager-prefix.pch */,
 			);
 			name = "Support Files";
 			path = "Example/Pods/Target Support Files/MKRRadioManager";
 			sourceTree = "<group>";
 		};
-		93B674C571E33AA5F59F1B2E9F3A22A5 /* Pod */ = {
+		A3BEDFBD84689AF4C51B2FC4D3A8FC55 /* MKRWIFIDeviceManager */ = {
 			isa = PBXGroup;
 			children = (
-				6D4552C022ACCBC59172428F49F15942 /* LICENSE */,
-				D6B2F2F23A1A9169C141FDF274D57F02 /* MKRRadioManager.podspec */,
-				ED2510F6DF7B06417B41647CD2BE75E3 /* README.md */,
+				4AF5219E1E148D6E032029326B64B3E2 /* MKRM3UListModel.h */,
+				6B17DA3E1589F95F1BB04C051A0BF7E2 /* MKRM3UListModel.m */,
+				8D2ED6AF2CB32499AA6847AA06885995 /* MKRUPnPDevice.h */,
+				4EA1BCA3761F5CFDEAD599760D731385 /* MKRUPnPDevice.m */,
+				EE580B0EF20D8B485C9C209A3AAF8325 /* MKRWIFIDeviceManager.h */,
+				1B4508752581AF105F4698A97BDA686D /* MKRWIFIDeviceManager.m */,
 			);
-			name = Pod;
+			name = MKRWIFIDeviceManager;
+			path = MKRRadioManager/Classes/MKRRadioManager/MKRWIFIDeviceManager;
 			sourceTree = "<group>";
 		};
-		961A191DAFF3AABC908F7A7FAAB53537 /* MKRAVPlayer */ = {
+		B023ED3F9E5FF5312C8C83114ED48E2C /* Headers */ = {
 			isa = PBXGroup;
 			children = (
-				E45769C87AB38717837EABBFCE9746B5 /* MKRAVPlayer.h */,
-				B959207141AAB16EEEF2884B714A63C7 /* MKRAVPlayer.m */,
-				33C12A9F21DFBF75D3924A3DADE7BF6C /* MKRPlayResourceStatus.h */,
-				C61A0051DEEF2EBA0B1A83DBF9CD94C2 /* MKRPlayResourceStatus.m */,
+				883013C7C5BB118683BBD20144861EBF /* MKRPlayControlProtocol.h */,
+				06B88CAEDB53D77F3109D0D93F898E44 /* MKRPlayResourceUpdateProtocol.h */,
+				385E37EDF7823B4E9832BF3581D76D6E /* MKRRadioPlayControlManager.h */,
+				A13F50D144D7080A15FB38A66367887F /* MKRResoureEnumHeader.h */,
 			);
-			name = MKRAVPlayer;
-			path = MKRRadioManager/Classes/MKRRadioManager/MKRAVPlayer;
+			name = Headers;
+			path = MKRRadioManager/Classes/MKRRadioManager/Headers;
 			sourceTree = "<group>";
 		};
 		B49F8B153615B771F34D34E857CF7DAF /* Development Pods */ = {
 			isa = PBXGroup;
 			children = (
-				546BD169817E80782CE26C4E162322A2 /* MKRRadioManager */,
+				62FEBB1D7D89A394140F28A5C218301A /* MKRRadioManager */,
 			);
 			name = "Development Pods";
 			sourceTree = "<group>";
 		};
+		BAB1652174D34CCCF2BDD7816ADA129E /* Pod */ = {
+			isa = PBXGroup;
+			children = (
+				68899B02239354B7E74A8091314E78A1 /* LICENSE */,
+				21F28AE3B763D4D83DE9C9D2C532EB32 /* MKRRadioManager.podspec */,
+				EFBEB724A7C46694A8AC151A929B3C28 /* README.md */,
+			);
+			name = Pod;
+			sourceTree = "<group>";
+		};
 		CF1408CF629C7361332E53B88F7BD30C = {
 			isa = PBXGroup;
 			children = (
@@ -268,20 +288,6 @@
 			path = "Target Support Files/Pods-MKRRadioManager_Tests";
 			sourceTree = "<group>";
 		};
-		D7A009714AFA0F336541A925109DB010 /* MKRWIFIDeviceManager */ = {
-			isa = PBXGroup;
-			children = (
-				EF0CAFA2C66F652D26AD9E254508FE6C /* MKRM3UListModel.h */,
-				3383350AD31F3C178FF09C0A1F4CE354 /* MKRM3UListModel.m */,
-				381EB66DDF7B5F77B1D0B862B8E2CF6F /* MKRUPnPDevice.h */,
-				D06205284FC535604DB6C172C937C5A2 /* MKRUPnPDevice.m */,
-				C65E17BC783D69092A89445F0CFD649F /* MKRWIFIDeviceManager.h */,
-				14DD5B7CB7994B3A259CEB2EE88152FB /* MKRWIFIDeviceManager.m */,
-			);
-			name = MKRWIFIDeviceManager;
-			path = MKRRadioManager/Classes/MKRRadioManager/MKRWIFIDeviceManager;
-			sourceTree = "<group>";
-		};
 		D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
@@ -299,22 +305,23 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		68FBB117676E5839A23CE300936E5367 /* Headers */ = {
+		C08FCB578F4C215E33B4D590ED504510 /* Headers */ = {
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				14FB948C203432D8005A0D4C3A35D4E6 /* MKRAVPlayer.h in Headers */,
-				3EB68E3D2608414A7ADA0F145BC0FEC7 /* MKRM3UListModel.h in Headers */,
-				276D752C5F536C68B0A169C1F8660611 /* MKRPlayControlProtocol.h in Headers */,
-				0A4A8FC98483C9572DDC1C0169D8FFA3 /* MKRPlayResourceStatus.h in Headers */,
-				818745858ED3B4A3DD4D3FFC95EA16DA /* MKRPlayResourceUpdateProtocol.h in Headers */,
-				C13625A3B9F30DC26369F14F4F4EC993 /* MKRRadioPlayControlManager.h in Headers */,
-				39AE3A3BC23F9EF5B3410B36CD060058 /* MKRRadioResorce.h in Headers */,
-				B3CD70B6BDAB92D25E131E23D01F40B8 /* MKRResoureEnumHeader.h in Headers */,
-				3C5EBCFCC7E14E833D067CA786EA43ED /* MKRUPnPDevice.h in Headers */,
-				C48B835DD9348CEF4E9A6D03F7BD3639 /* MKRWIFIDeviceManager.h in Headers */,
-				59F25FA838253B8009D9214AAE118BEB /* NSString+MKRRadioManagerAdd.h in Headers */,
-				48857C2E029C6B8B0615B4E0838DF55F /* UIDevice+MKRRadioManagerAdd.h in Headers */,
+				45DA105594C15A9F9152CB6BB3F97FDA /* MKRAVPlayer.h in Headers */,
+				1A8323CF539CBCCADBBB73D5CA7E1105 /* MKRM3UListModel.h in Headers */,
+				51C9B21F896349CA28C9E335791E9F06 /* MKRPlayControlProtocol.h in Headers */,
+				0752174CC9F1F4113A6210CBB5FC7A4C /* MKRPlayResourceStatus.h in Headers */,
+				E7A7E8C276DDB8D02889A5C7C625CA86 /* MKRPlayResourceUpdateProtocol.h in Headers */,
+				10398C5F92AA80197639284CFECDBE99 /* MKRRadioPlayControlManager.h in Headers */,
+				8101E2571829444DB7DD53A4F747504A /* MKRRadioResorce.h in Headers */,
+				A5263DC946CA5202BCCD3DC132671E45 /* MKRResoureEnumHeader.h in Headers */,
+				EBFC9E2EE8989CCB9EC7ABEED595976B /* MKRUPnPDevice.h in Headers */,
+				81CCE14F2B0B2A696EBEF16CFC53D662 /* MKRWIFIDeviceManager.h in Headers */,
+				6BA4D3D198020D9B811A41599311D164 /* NSHashTable+MKRRadioManagerAdd.h in Headers */,
+				C351F794FC8535E194CA0CB2D4F7A799 /* NSString+MKRRadioManagerAdd.h in Headers */,
+				CE34E163C0B43A59CFC7F7A1F47BC59C /* UIDevice+MKRRadioManagerAdd.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -330,11 +337,11 @@
 /* Begin PBXNativeTarget section */
 		2F2655D0037091849641E648A2FB6766 /* MKRRadioManager */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = 2B4968AB224607C3194A97977404FB7E /* Build configuration list for PBXNativeTarget "MKRRadioManager" */;
+			buildConfigurationList = 2C2D2B1157D3743E37794EF220CC23D1 /* Build configuration list for PBXNativeTarget "MKRRadioManager" */;
 			buildPhases = (
-				68FBB117676E5839A23CE300936E5367 /* Headers */,
-				A6A713DD71ABCA12E494F9BFD1886850 /* Sources */,
-				7A3F7BCE03D07B7B40A062F05F52931B /* Frameworks */,
+				C08FCB578F4C215E33B4D590ED504510 /* Headers */,
+				3E273B35DC003983E8BF5FA1D86BB3C6 /* Sources */,
+				84F1327F252E09DF90513EC47D28E347 /* Frameworks */,
 			);
 			buildRules = (
 			);
@@ -418,19 +425,20 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		A6A713DD71ABCA12E494F9BFD1886850 /* Sources */ = {
+		3E273B35DC003983E8BF5FA1D86BB3C6 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				D525AA395CD55D1F438345300A3BD431 /* MKRAVPlayer.m in Sources */,
-				AF1582148CBE0BEA205DF4A56A5E9C38 /* MKRM3UListModel.m in Sources */,
-				9189303E592C1DF3FE220CF678B77834 /* MKRPlayResourceStatus.m in Sources */,
-				31CF2C2595ECABE699A957E0A6AF1B04 /* MKRRadioManager-dummy.m in Sources */,
-				D4C437E314AB55FFBA24146881A651FB /* MKRRadioResorce.m in Sources */,
-				D94E65EBD523E887514B4FB6D781FD80 /* MKRUPnPDevice.m in Sources */,
-				31F1516EFF05AB33420A4B43D0CEC31C /* MKRWIFIDeviceManager.m in Sources */,
-				8B1F3B8F3D1F68C78FC3D85CE7A9C511 /* NSString+MKRRadioManagerAdd.m in Sources */,
-				23C65CA3FD798CDB432B7CF74972020F /* UIDevice+MKRRadioManagerAdd.m in Sources */,
+				0F6E23F3DBCECE9F29D7DD4F680682AD /* MKRAVPlayer.m in Sources */,
+				E05A599D4D5337CFF6FAC62D3DAB8F38 /* MKRM3UListModel.m in Sources */,
+				B60522713DDDE3CD23792F11F716F20E /* MKRPlayResourceStatus.m in Sources */,
+				FDB8574CF68AB36EBD686A60AE583BA1 /* MKRRadioManager-dummy.m in Sources */,
+				3E23680680DCE587CF61556E57629E68 /* MKRRadioResorce.m in Sources */,
+				C0A5986288CA046BFAC0A0862E0221AD /* MKRUPnPDevice.m in Sources */,
+				EB0C5B1F5D6FC26438DDF5881D4A51E5 /* MKRWIFIDeviceManager.m in Sources */,
+				EBEFFFBEC96104520379C4348BA69CA0 /* NSHashTable+MKRRadioManagerAdd.m in Sources */,
+				292CB70D81DC98F1018724C91F561BDF /* NSString+MKRRadioManagerAdd.m in Sources */,
+				11F7FF31466FB609821E6C4F77FC7236 /* UIDevice+MKRRadioManagerAdd.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -460,53 +468,6 @@
 /* End PBXTargetDependency section */
 
 /* Begin XCBuildConfiguration section */
-		043154221DE3066628E92CB55265E5D6 /* Release */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 93EE0177C1B62D6B6660F63A90E06A61 /* MKRRadioManager.xcconfig */;
-			buildSettings = {
-				CODE_SIGN_IDENTITY = "iPhone Developer";
-				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
-				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
-				GCC_PREFIX_HEADER = "Target Support Files/MKRRadioManager/MKRRadioManager-prefix.pch";
-				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				OTHER_LDFLAGS = "";
-				OTHER_LIBTOOLFLAGS = "";
-				PRIVATE_HEADERS_FOLDER_PATH = "";
-				PRODUCT_MODULE_NAME = MKRRadioManager;
-				PRODUCT_NAME = MKRRadioManager;
-				PUBLIC_HEADERS_FOLDER_PATH = "";
-				SDKROOT = iphoneos;
-				SKIP_INSTALL = YES;
-				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
-				TARGETED_DEVICE_FAMILY = "1,2";
-				VALIDATE_PRODUCT = YES;
-			};
-			name = Release;
-		};
-		273FC016B1C3AE68E89A570BA30C6F49 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 93EE0177C1B62D6B6660F63A90E06A61 /* MKRRadioManager.xcconfig */;
-			buildSettings = {
-				CODE_SIGN_IDENTITY = "iPhone Developer";
-				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
-				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
-				GCC_PREFIX_HEADER = "Target Support Files/MKRRadioManager/MKRRadioManager-prefix.pch";
-				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				OTHER_LDFLAGS = "";
-				OTHER_LIBTOOLFLAGS = "";
-				PRIVATE_HEADERS_FOLDER_PATH = "";
-				PRODUCT_MODULE_NAME = MKRRadioManager;
-				PRODUCT_NAME = MKRRadioManager;
-				PUBLIC_HEADERS_FOLDER_PATH = "";
-				SDKROOT = iphoneos;
-				SKIP_INSTALL = YES;
-				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
-				TARGETED_DEVICE_FAMILY = "1,2";
-			};
-			name = Debug;
-		};
 		39769C66FA8FB99B807E0CA1F02C1A39 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -592,6 +553,53 @@
 			};
 			name = Debug;
 		};
+		912315DE0C97AAA5B9F8EE73E2B78D35 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = A26B77F91ECB3BD7C7FA66128982C3FF /* MKRRadioManager.xcconfig */;
+			buildSettings = {
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+				GCC_PREFIX_HEADER = "Target Support Files/MKRRadioManager/MKRRadioManager-prefix.pch";
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				OTHER_LDFLAGS = "";
+				OTHER_LIBTOOLFLAGS = "";
+				PRIVATE_HEADERS_FOLDER_PATH = "";
+				PRODUCT_MODULE_NAME = MKRRadioManager;
+				PRODUCT_NAME = MKRRadioManager;
+				PUBLIC_HEADERS_FOLDER_PATH = "";
+				SDKROOT = iphoneos;
+				SKIP_INSTALL = YES;
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		AC667AB90BDB0DA4EF6E3D976F07AD99 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = A26B77F91ECB3BD7C7FA66128982C3FF /* MKRRadioManager.xcconfig */;
+			buildSettings = {
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+				GCC_PREFIX_HEADER = "Target Support Files/MKRRadioManager/MKRRadioManager-prefix.pch";
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				OTHER_LDFLAGS = "";
+				OTHER_LIBTOOLFLAGS = "";
+				PRIVATE_HEADERS_FOLDER_PATH = "";
+				PRODUCT_MODULE_NAME = MKRRadioManager;
+				PRODUCT_NAME = MKRRadioManager;
+				PUBLIC_HEADERS_FOLDER_PATH = "";
+				SDKROOT = iphoneos;
+				SKIP_INSTALL = YES;
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
 		BAF14824E77A349FB18D2A8D3A8A2472 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = FE9441B2BC00597A4F90F43AB9E188A9 /* Pods-MKRRadioManager_Tests.debug.xcconfig */;
@@ -729,11 +737,11 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
-		2B4968AB224607C3194A97977404FB7E /* Build configuration list for PBXNativeTarget "MKRRadioManager" */ = {
+		2C2D2B1157D3743E37794EF220CC23D1 /* Build configuration list for PBXNativeTarget "MKRRadioManager" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				273FC016B1C3AE68E89A570BA30C6F49 /* Debug */,
-				043154221DE3066628E92CB55265E5D6 /* Release */,
+				AC667AB90BDB0DA4EF6E3D976F07AD99 /* Debug */,
+				912315DE0C97AAA5B9F8EE73E2B78D35 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;

+ 19 - 0
MKRRadioManager/Classes/MKRRadioManager/Category/NSHashTable+MKRRadioManagerAdd.h

@@ -0,0 +1,19 @@
+//
+//  NSHashTable+MKRRadioManagerAdd.h
+//  MaoKRadioPlayer
+//
+//  Created by yyqxiaoyin on 2019/5/10.
+//  Copyright © 2019 Muzen. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NSHashTable (MKRRadioManagerAdd)
+
+- (void)makeObjectsPerformSelectorWithObjects:(SEL)sel, ...;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 212 - 0
MKRRadioManager/Classes/MKRRadioManager/Category/NSHashTable+MKRRadioManagerAdd.m

@@ -0,0 +1,212 @@
+//
+//  NSHashTable+MKRRadioManagerAdd.m
+//  MaoKRadioPlayer
+//
+//  Created by yyqxiaoyin on 2019/5/10.
+//  Copyright © 2019 Muzen. All rights reserved.
+//
+
+#import "NSHashTable+MKRRadioManagerAdd.h"
+
+@implementation NSHashTable (MKRRadioManagerAdd)
+
+- (void)makeObjectsPerformSelectorWithObjects:(SEL)sel, ...{
+    for (id obj in self) {
+        if (![obj respondsToSelector:sel]) {
+            continue;
+        }
+        NSMethodSignature *sig = [obj methodSignatureForSelector:sel];
+        if (!sig) {
+            [obj doesNotRecognizeSelector:sel];
+        }
+        NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:sig];
+        if (!invocation) {
+            [obj doesNotRecognizeSelector:sel];
+        }
+        [invocation setTarget:obj];
+        [invocation setSelector:sel];
+        va_list args;
+        va_start(args, sel);
+        [self setInv:invocation withSig:sig andArgs:args];
+        [invocation invoke];
+    }
+}
+
+- (void)setInv:(NSInvocation *)inv withSig:(NSMethodSignature *)sig andArgs:(va_list)args {
+    NSUInteger count = [sig numberOfArguments];
+    for (int index = 2; index < count; index++) {
+        char *type = (char *)[sig getArgumentTypeAtIndex:index];
+        while (*type == 'r' || // const
+               *type == 'n' || // in
+               *type == 'N' || // inout
+               *type == 'o' || // out
+               *type == 'O' || // bycopy
+               *type == 'R' || // byref
+               *type == 'V') { // oneway
+            type++; // cutoff useless prefix
+        }
+        
+        BOOL unsupportedType = NO;
+        switch (*type) {
+            case 'v': // 1: void
+            case 'B': // 1: bool
+            case 'c': // 1: char / BOOL
+            case 'C': // 1: unsigned char
+            case 's': // 2: short
+            case 'S': // 2: unsigned short
+            case 'i': // 4: int / NSInteger(32bit)
+            case 'I': // 4: unsigned int / NSUInteger(32bit)
+            case 'l': // 4: long(32bit)
+            case 'L': // 4: unsigned long(32bit)
+            { // 'char' and 'short' will be promoted to 'int'.
+                int arg = va_arg(args, int);
+                [inv setArgument:&arg atIndex:index];
+            } break;
+                
+            case 'q': // 8: long long / long(64bit) / NSInteger(64bit)
+            case 'Q': // 8: unsigned long long / unsigned long(64bit) / NSUInteger(64bit)
+            {
+                long long arg = va_arg(args, long long);
+                [inv setArgument:&arg atIndex:index];
+            } break;
+                
+            case 'f': // 4: float / CGFloat(32bit)
+            { // 'float' will be promoted to 'double'.
+                double arg = va_arg(args, double);
+                float argf = arg;
+                [inv setArgument:&argf atIndex:index];
+            } break;
+                
+            case 'd': // 8: double / CGFloat(64bit)
+            {
+                double arg = va_arg(args, double);
+                [inv setArgument:&arg atIndex:index];
+            } break;
+                
+            case 'D': // 16: long double
+            {
+                long double arg = va_arg(args, long double);
+                [inv setArgument:&arg atIndex:index];
+            } break;
+                
+            case '*': // char *
+            case '^': // pointer
+            {
+                void *arg = va_arg(args, void *);
+                [inv setArgument:&arg atIndex:index];
+            } break;
+                
+            case ':': // SEL
+            {
+                SEL arg = va_arg(args, SEL);
+                [inv setArgument:&arg atIndex:index];
+            } break;
+                
+            case '#': // Class
+            {
+                Class arg = va_arg(args, Class);
+                [inv setArgument:&arg atIndex:index];
+            } break;
+                
+            case '@': // id
+            {
+                id arg = va_arg(args, id);
+                [inv setArgument:&arg atIndex:index];
+            } break;
+                
+            case '{': // struct
+            {
+                if (strcmp(type, @encode(CGPoint)) == 0) {
+                    CGPoint arg = va_arg(args, CGPoint);
+                    [inv setArgument:&arg atIndex:index];
+                } else if (strcmp(type, @encode(CGSize)) == 0) {
+                    CGSize arg = va_arg(args, CGSize);
+                    [inv setArgument:&arg atIndex:index];
+                } else if (strcmp(type, @encode(CGRect)) == 0) {
+                    CGRect arg = va_arg(args, CGRect);
+                    [inv setArgument:&arg atIndex:index];
+                } else if (strcmp(type, @encode(CGVector)) == 0) {
+                    CGVector arg = va_arg(args, CGVector);
+                    [inv setArgument:&arg atIndex:index];
+                } else if (strcmp(type, @encode(CGAffineTransform)) == 0) {
+                    CGAffineTransform arg = va_arg(args, CGAffineTransform);
+                    [inv setArgument:&arg atIndex:index];
+                } else if (strcmp(type, @encode(CATransform3D)) == 0) {
+                    CATransform3D arg = va_arg(args, CATransform3D);
+                    [inv setArgument:&arg atIndex:index];
+                } else if (strcmp(type, @encode(NSRange)) == 0) {
+                    NSRange arg = va_arg(args, NSRange);
+                    [inv setArgument:&arg atIndex:index];
+                } else if (strcmp(type, @encode(UIOffset)) == 0) {
+                    UIOffset arg = va_arg(args, UIOffset);
+                    [inv setArgument:&arg atIndex:index];
+                } else if (strcmp(type, @encode(UIEdgeInsets)) == 0) {
+                    UIEdgeInsets arg = va_arg(args, UIEdgeInsets);
+                    [inv setArgument:&arg atIndex:index];
+                } else {
+                    unsupportedType = YES;
+                }
+            } break;
+                
+            case '(': // union
+            {
+                unsupportedType = YES;
+            } break;
+                
+            case '[': // array
+            {
+                unsupportedType = YES;
+            } break;
+                
+            default: // what?!
+            {
+                unsupportedType = YES;
+            } break;
+        }
+        
+        if (unsupportedType) {
+            // Try with some dummy type...
+            
+            NSUInteger size = 0;
+            NSGetSizeAndAlignment(type, &size, NULL);
+            
+#define case_size(_size_) \
+else if (size <= 4 * _size_ ) { \
+struct dummy { char tmp[4 * _size_]; }; \
+struct dummy arg = va_arg(args, struct dummy); \
+[inv setArgument:&arg atIndex:index]; \
+}
+            if (size == 0) { }
+            case_size( 1) case_size( 2) case_size( 3) case_size( 4)
+            case_size( 5) case_size( 6) case_size( 7) case_size( 8)
+            case_size( 9) case_size(10) case_size(11) case_size(12)
+            case_size(13) case_size(14) case_size(15) case_size(16)
+            case_size(17) case_size(18) case_size(19) case_size(20)
+            case_size(21) case_size(22) case_size(23) case_size(24)
+            case_size(25) case_size(26) case_size(27) case_size(28)
+            case_size(29) case_size(30) case_size(31) case_size(32)
+            case_size(33) case_size(34) case_size(35) case_size(36)
+            case_size(37) case_size(38) case_size(39) case_size(40)
+            case_size(41) case_size(42) case_size(43) case_size(44)
+            case_size(45) case_size(46) case_size(47) case_size(48)
+            case_size(49) case_size(50) case_size(51) case_size(52)
+            case_size(53) case_size(54) case_size(55) case_size(56)
+            case_size(57) case_size(58) case_size(59) case_size(60)
+            case_size(61) case_size(62) case_size(63) case_size(64)
+            else {
+                /*
+                 Larger than 256 byte?! I don't want to deal with this stuff up...
+                 Ignore this argument.
+                 */
+                struct dummy {char tmp;};
+                for (int i = 0; i < size; i++) va_arg(args, struct dummy);
+                NSLog(@"performSelectorWithArgs unsupported type:%s (%lu bytes)",
+                      [sig getArgumentTypeAtIndex:index],(unsigned long)size);
+            }
+#undef case_size
+            
+        }
+    }
+}
+
+@end