├── DEMO
├── DeallocCallback.xcworkspace
│ └── contents.xcworkspacedata
├── MSDeallocCallback.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ └── contents.xcworkspacedata
├── MSDeallocCallback
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── icon-1024@2x.png
│ │ │ ├── icon-20-ipad.png
│ │ │ ├── icon-20@2x-ipad.png
│ │ │ ├── icon-20@2x.png
│ │ │ ├── icon-20@3x.png
│ │ │ ├── icon-29-ipad.png
│ │ │ ├── icon-29.png
│ │ │ ├── icon-29@2x-ipad.png
│ │ │ ├── icon-29@2x.png
│ │ │ ├── icon-29@3x.png
│ │ │ ├── icon-40.png
│ │ │ ├── icon-40@2x.png
│ │ │ ├── icon-40@3x.png
│ │ │ ├── icon-50.png
│ │ │ ├── icon-50@2x.png
│ │ │ ├── icon-57.png
│ │ │ ├── icon-57@2x.png
│ │ │ ├── icon-60@2x.png
│ │ │ ├── icon-60@3x.png
│ │ │ ├── icon-72.png
│ │ │ ├── icon-72@2x.png
│ │ │ ├── icon-76.png
│ │ │ ├── icon-76@2x.png
│ │ │ └── icon-83.5@2x.png
│ │ ├── Contents.json
│ │ └── LaunchImage.launchimage
│ │ │ ├── 1024iPadPortraitWOSBiOS56_768x1004pt.png
│ │ │ ├── 1024iPadPortraitWOSBiOS56_768x1004pt@2x.png
│ │ │ ├── 1024iPadPortraitiOS56_768x1024pt.png
│ │ │ ├── 1024iPadPortraitiOS56_768x1024pt@2x.png
│ │ │ ├── 1024iPadPortraitiOS789_768x1024pt.png
│ │ │ ├── 1024iPadPortraitiOS789_768x1024pt@2x.png
│ │ │ ├── 1024iPhonePortraitiOS56_320x480pt.png
│ │ │ ├── 1024iPhonePortraitiOS56_320x480pt@2x.png
│ │ │ ├── 1024iPhonePortraitiOS56_320x568pt@2x.png
│ │ │ ├── 1024iPhonePortraitiOS789_320x480pt@2x.png
│ │ │ ├── 1024iPhonePortraitiOS789_320x568pt@2x.png
│ │ │ ├── 1024iPhonePortraitiOS89_375x667pt@2x.png
│ │ │ ├── 1024iPhonePortraitiOS89_414x736pt@3x.png
│ │ │ └── Contents.json
│ ├── Info.plist
│ ├── SecondViewController.h
│ ├── SecondViewController.m
│ ├── ViewController.h
│ ├── ViewController.m
│ └── main.m
├── Podfile
├── Podfile.lock
└── Pods
│ ├── Headers
│ ├── Private
│ │ └── MSDeallocCallBack
│ │ │ └── NSObject+MSDeallocCallBack.h
│ └── Public
│ │ └── MSDeallocCallBack
│ │ └── NSObject+MSDeallocCallBack.h
│ ├── MSDeallocCallBack
│ ├── DeallocCallback
│ │ ├── NSObject+MSDeallocCallBack.h
│ │ └── NSObject+MSDeallocCallBack.m
│ ├── LICENSE
│ └── README.md
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ └── project.pbxproj
│ └── Target Support Files
│ ├── MSDeallocCallBack
│ ├── MSDeallocCallBack-dummy.m
│ ├── MSDeallocCallBack-prefix.pch
│ └── MSDeallocCallBack.xcconfig
│ └── Pods-DeallocCallback
│ ├── Pods-DeallocCallback-acknowledgements.markdown
│ ├── Pods-DeallocCallback-acknowledgements.plist
│ ├── Pods-DeallocCallback-dummy.m
│ ├── Pods-DeallocCallback-frameworks.sh
│ ├── Pods-DeallocCallback-resources.sh
│ ├── Pods-DeallocCallback.debug.xcconfig
│ └── Pods-DeallocCallback.release.xcconfig
├── LICENSE
├── MSDeallocCallBack.podspec
├── MSDeallocCallback
├── NSObject+MSDeallocCallBack.h
└── NSObject+MSDeallocCallBack.m
└── README.md
/DEMO/DeallocCallback.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 096275A01EF4E007003BB2C3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 0962759F1EF4E007003BB2C3 /* main.m */; };
11 | 096275A31EF4E007003BB2C3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 096275A21EF4E007003BB2C3 /* AppDelegate.m */; };
12 | 096275A61EF4E007003BB2C3 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 096275A51EF4E007003BB2C3 /* ViewController.m */; };
13 | 096275AB1EF4E007003BB2C3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 096275AA1EF4E007003BB2C3 /* Assets.xcassets */; };
14 | 096275BA1EF4E445003BB2C3 /* SecondViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 096275B91EF4E445003BB2C3 /* SecondViewController.m */; };
15 | F5D741BF039D521B66D6D91E /* libPods-DeallocCallback.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9AE54C81A54C1E640294E88 /* libPods-DeallocCallback.a */; };
16 | /* End PBXBuildFile section */
17 |
18 | /* Begin PBXFileReference section */
19 | 0962759B1EF4E006003BB2C3 /* MSDeallocCallback.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MSDeallocCallback.app; sourceTree = BUILT_PRODUCTS_DIR; };
20 | 0962759F1EF4E007003BB2C3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
21 | 096275A11EF4E007003BB2C3 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
22 | 096275A21EF4E007003BB2C3 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
23 | 096275A41EF4E007003BB2C3 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; };
24 | 096275A51EF4E007003BB2C3 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; };
25 | 096275AA1EF4E007003BB2C3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
26 | 096275AF1EF4E007003BB2C3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
27 | 096275B81EF4E445003BB2C3 /* SecondViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecondViewController.h; sourceTree = ""; };
28 | 096275B91EF4E445003BB2C3 /* SecondViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SecondViewController.m; sourceTree = ""; };
29 | A9AE54C81A54C1E640294E88 /* libPods-DeallocCallback.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DeallocCallback.a"; sourceTree = BUILT_PRODUCTS_DIR; };
30 | DAE32FFAF9428281451CF244 /* Pods-DeallocCallback.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeallocCallback.release.xcconfig"; path = "Pods/Target Support Files/Pods-DeallocCallback/Pods-DeallocCallback.release.xcconfig"; sourceTree = ""; };
31 | E3F0D0F5106B8EAA7E22CF9C /* Pods-DeallocCallback.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeallocCallback.debug.xcconfig"; path = "Pods/Target Support Files/Pods-DeallocCallback/Pods-DeallocCallback.debug.xcconfig"; sourceTree = ""; };
32 | /* End PBXFileReference section */
33 |
34 | /* Begin PBXFrameworksBuildPhase section */
35 | 096275981EF4E006003BB2C3 /* Frameworks */ = {
36 | isa = PBXFrameworksBuildPhase;
37 | buildActionMask = 2147483647;
38 | files = (
39 | F5D741BF039D521B66D6D91E /* libPods-DeallocCallback.a in Frameworks */,
40 | );
41 | runOnlyForDeploymentPostprocessing = 0;
42 | };
43 | /* End PBXFrameworksBuildPhase section */
44 |
45 | /* Begin PBXGroup section */
46 | 096275921EF4E006003BB2C3 = {
47 | isa = PBXGroup;
48 | children = (
49 | 0962759D1EF4E006003BB2C3 /* MSDeallocCallback */,
50 | 0962759C1EF4E006003BB2C3 /* Products */,
51 | 661C4D2F74F3AA2235347601 /* Pods */,
52 | 164E6826E4C1F27F998BBAC8 /* Frameworks */,
53 | );
54 | sourceTree = "";
55 | };
56 | 0962759C1EF4E006003BB2C3 /* Products */ = {
57 | isa = PBXGroup;
58 | children = (
59 | 0962759B1EF4E006003BB2C3 /* MSDeallocCallback.app */,
60 | );
61 | name = Products;
62 | sourceTree = "";
63 | };
64 | 0962759D1EF4E006003BB2C3 /* MSDeallocCallback */ = {
65 | isa = PBXGroup;
66 | children = (
67 | 096275A11EF4E007003BB2C3 /* AppDelegate.h */,
68 | 096275A21EF4E007003BB2C3 /* AppDelegate.m */,
69 | 096275A41EF4E007003BB2C3 /* ViewController.h */,
70 | 096275A51EF4E007003BB2C3 /* ViewController.m */,
71 | 096275B81EF4E445003BB2C3 /* SecondViewController.h */,
72 | 096275B91EF4E445003BB2C3 /* SecondViewController.m */,
73 | 096275AA1EF4E007003BB2C3 /* Assets.xcassets */,
74 | 096275AF1EF4E007003BB2C3 /* Info.plist */,
75 | 0962759E1EF4E007003BB2C3 /* Supporting Files */,
76 | );
77 | path = MSDeallocCallback;
78 | sourceTree = "";
79 | };
80 | 0962759E1EF4E007003BB2C3 /* Supporting Files */ = {
81 | isa = PBXGroup;
82 | children = (
83 | 0962759F1EF4E007003BB2C3 /* main.m */,
84 | );
85 | name = "Supporting Files";
86 | sourceTree = "";
87 | };
88 | 164E6826E4C1F27F998BBAC8 /* Frameworks */ = {
89 | isa = PBXGroup;
90 | children = (
91 | A9AE54C81A54C1E640294E88 /* libPods-DeallocCallback.a */,
92 | );
93 | name = Frameworks;
94 | sourceTree = "";
95 | };
96 | 661C4D2F74F3AA2235347601 /* Pods */ = {
97 | isa = PBXGroup;
98 | children = (
99 | E3F0D0F5106B8EAA7E22CF9C /* Pods-DeallocCallback.debug.xcconfig */,
100 | DAE32FFAF9428281451CF244 /* Pods-DeallocCallback.release.xcconfig */,
101 | );
102 | name = Pods;
103 | sourceTree = "";
104 | };
105 | /* End PBXGroup section */
106 |
107 | /* Begin PBXNativeTarget section */
108 | 0962759A1EF4E006003BB2C3 /* MSDeallocCallback */ = {
109 | isa = PBXNativeTarget;
110 | buildConfigurationList = 096275B21EF4E007003BB2C3 /* Build configuration list for PBXNativeTarget "MSDeallocCallback" */;
111 | buildPhases = (
112 | 6B0BF333B94DF218529839F5 /* [CP] Check Pods Manifest.lock */,
113 | 096275971EF4E006003BB2C3 /* Sources */,
114 | 096275981EF4E006003BB2C3 /* Frameworks */,
115 | 096275991EF4E006003BB2C3 /* Resources */,
116 | 1BC9EFA18CA7CAF07769408C /* [CP] Embed Pods Frameworks */,
117 | 43D7C0CAF74016DA885B2973 /* [CP] Copy Pods Resources */,
118 | );
119 | buildRules = (
120 | );
121 | dependencies = (
122 | );
123 | name = MSDeallocCallback;
124 | productName = DeallocCallback;
125 | productReference = 0962759B1EF4E006003BB2C3 /* MSDeallocCallback.app */;
126 | productType = "com.apple.product-type.application";
127 | };
128 | /* End PBXNativeTarget section */
129 |
130 | /* Begin PBXProject section */
131 | 096275931EF4E006003BB2C3 /* Project object */ = {
132 | isa = PBXProject;
133 | attributes = {
134 | LastUpgradeCheck = 0910;
135 | ORGANIZATIONNAME = J;
136 | TargetAttributes = {
137 | 0962759A1EF4E006003BB2C3 = {
138 | CreatedOnToolsVersion = 8.0;
139 | ProvisioningStyle = Manual;
140 | };
141 | };
142 | };
143 | buildConfigurationList = 096275961EF4E006003BB2C3 /* Build configuration list for PBXProject "MSDeallocCallback" */;
144 | compatibilityVersion = "Xcode 3.2";
145 | developmentRegion = English;
146 | hasScannedForEncodings = 0;
147 | knownRegions = (
148 | en,
149 | Base,
150 | );
151 | mainGroup = 096275921EF4E006003BB2C3;
152 | productRefGroup = 0962759C1EF4E006003BB2C3 /* Products */;
153 | projectDirPath = "";
154 | projectRoot = "";
155 | targets = (
156 | 0962759A1EF4E006003BB2C3 /* MSDeallocCallback */,
157 | );
158 | };
159 | /* End PBXProject section */
160 |
161 | /* Begin PBXResourcesBuildPhase section */
162 | 096275991EF4E006003BB2C3 /* Resources */ = {
163 | isa = PBXResourcesBuildPhase;
164 | buildActionMask = 2147483647;
165 | files = (
166 | 096275AB1EF4E007003BB2C3 /* Assets.xcassets in Resources */,
167 | );
168 | runOnlyForDeploymentPostprocessing = 0;
169 | };
170 | /* End PBXResourcesBuildPhase section */
171 |
172 | /* Begin PBXShellScriptBuildPhase section */
173 | 1BC9EFA18CA7CAF07769408C /* [CP] Embed Pods Frameworks */ = {
174 | isa = PBXShellScriptBuildPhase;
175 | buildActionMask = 2147483647;
176 | files = (
177 | );
178 | inputPaths = (
179 | );
180 | name = "[CP] Embed Pods Frameworks";
181 | outputPaths = (
182 | );
183 | runOnlyForDeploymentPostprocessing = 0;
184 | shellPath = /bin/sh;
185 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-DeallocCallback/Pods-DeallocCallback-frameworks.sh\"\n";
186 | showEnvVarsInLog = 0;
187 | };
188 | 43D7C0CAF74016DA885B2973 /* [CP] Copy Pods Resources */ = {
189 | isa = PBXShellScriptBuildPhase;
190 | buildActionMask = 2147483647;
191 | files = (
192 | );
193 | inputPaths = (
194 | );
195 | name = "[CP] Copy Pods Resources";
196 | outputPaths = (
197 | );
198 | runOnlyForDeploymentPostprocessing = 0;
199 | shellPath = /bin/sh;
200 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-DeallocCallback/Pods-DeallocCallback-resources.sh\"\n";
201 | showEnvVarsInLog = 0;
202 | };
203 | 6B0BF333B94DF218529839F5 /* [CP] Check Pods Manifest.lock */ = {
204 | isa = PBXShellScriptBuildPhase;
205 | buildActionMask = 2147483647;
206 | files = (
207 | );
208 | inputPaths = (
209 | );
210 | name = "[CP] Check Pods Manifest.lock";
211 | outputPaths = (
212 | );
213 | runOnlyForDeploymentPostprocessing = 0;
214 | shellPath = /bin/sh;
215 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
216 | showEnvVarsInLog = 0;
217 | };
218 | /* End PBXShellScriptBuildPhase section */
219 |
220 | /* Begin PBXSourcesBuildPhase section */
221 | 096275971EF4E006003BB2C3 /* Sources */ = {
222 | isa = PBXSourcesBuildPhase;
223 | buildActionMask = 2147483647;
224 | files = (
225 | 096275BA1EF4E445003BB2C3 /* SecondViewController.m in Sources */,
226 | 096275A61EF4E007003BB2C3 /* ViewController.m in Sources */,
227 | 096275A31EF4E007003BB2C3 /* AppDelegate.m in Sources */,
228 | 096275A01EF4E007003BB2C3 /* main.m in Sources */,
229 | );
230 | runOnlyForDeploymentPostprocessing = 0;
231 | };
232 | /* End PBXSourcesBuildPhase section */
233 |
234 | /* Begin XCBuildConfiguration section */
235 | 096275B01EF4E007003BB2C3 /* Debug */ = {
236 | isa = XCBuildConfiguration;
237 | buildSettings = {
238 | ALWAYS_SEARCH_USER_PATHS = NO;
239 | CLANG_ANALYZER_NONNULL = YES;
240 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
241 | CLANG_CXX_LIBRARY = "libc++";
242 | CLANG_ENABLE_MODULES = YES;
243 | CLANG_ENABLE_OBJC_ARC = YES;
244 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
245 | CLANG_WARN_BOOL_CONVERSION = YES;
246 | CLANG_WARN_COMMA = YES;
247 | CLANG_WARN_CONSTANT_CONVERSION = YES;
248 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
249 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
250 | CLANG_WARN_EMPTY_BODY = YES;
251 | CLANG_WARN_ENUM_CONVERSION = YES;
252 | CLANG_WARN_INFINITE_RECURSION = YES;
253 | CLANG_WARN_INT_CONVERSION = YES;
254 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
255 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
256 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
257 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
258 | CLANG_WARN_STRICT_PROTOTYPES = YES;
259 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
260 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
261 | CLANG_WARN_UNREACHABLE_CODE = YES;
262 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
263 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
264 | COPY_PHASE_STRIP = NO;
265 | DEBUG_INFORMATION_FORMAT = dwarf;
266 | ENABLE_STRICT_OBJC_MSGSEND = YES;
267 | ENABLE_TESTABILITY = YES;
268 | GCC_C_LANGUAGE_STANDARD = gnu99;
269 | GCC_DYNAMIC_NO_PIC = NO;
270 | GCC_NO_COMMON_BLOCKS = YES;
271 | GCC_OPTIMIZATION_LEVEL = 0;
272 | GCC_PREPROCESSOR_DEFINITIONS = (
273 | "DEBUG=1",
274 | "$(inherited)",
275 | );
276 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
277 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
278 | GCC_WARN_UNDECLARED_SELECTOR = YES;
279 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
280 | GCC_WARN_UNUSED_FUNCTION = YES;
281 | GCC_WARN_UNUSED_VARIABLE = YES;
282 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
283 | MTL_ENABLE_DEBUG_INFO = YES;
284 | ONLY_ACTIVE_ARCH = YES;
285 | SDKROOT = iphoneos;
286 | TARGETED_DEVICE_FAMILY = "1,2";
287 | };
288 | name = Debug;
289 | };
290 | 096275B11EF4E007003BB2C3 /* Release */ = {
291 | isa = XCBuildConfiguration;
292 | buildSettings = {
293 | ALWAYS_SEARCH_USER_PATHS = NO;
294 | CLANG_ANALYZER_NONNULL = YES;
295 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
296 | CLANG_CXX_LIBRARY = "libc++";
297 | CLANG_ENABLE_MODULES = YES;
298 | CLANG_ENABLE_OBJC_ARC = YES;
299 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
300 | CLANG_WARN_BOOL_CONVERSION = YES;
301 | CLANG_WARN_COMMA = YES;
302 | CLANG_WARN_CONSTANT_CONVERSION = YES;
303 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
304 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
305 | CLANG_WARN_EMPTY_BODY = YES;
306 | CLANG_WARN_ENUM_CONVERSION = YES;
307 | CLANG_WARN_INFINITE_RECURSION = YES;
308 | CLANG_WARN_INT_CONVERSION = YES;
309 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
310 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
311 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
312 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
313 | CLANG_WARN_STRICT_PROTOTYPES = YES;
314 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
315 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
316 | CLANG_WARN_UNREACHABLE_CODE = YES;
317 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
318 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
319 | COPY_PHASE_STRIP = NO;
320 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
321 | ENABLE_NS_ASSERTIONS = NO;
322 | ENABLE_STRICT_OBJC_MSGSEND = YES;
323 | GCC_C_LANGUAGE_STANDARD = gnu99;
324 | GCC_NO_COMMON_BLOCKS = YES;
325 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
326 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
327 | GCC_WARN_UNDECLARED_SELECTOR = YES;
328 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
329 | GCC_WARN_UNUSED_FUNCTION = YES;
330 | GCC_WARN_UNUSED_VARIABLE = YES;
331 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
332 | MTL_ENABLE_DEBUG_INFO = NO;
333 | SDKROOT = iphoneos;
334 | TARGETED_DEVICE_FAMILY = "1,2";
335 | VALIDATE_PRODUCT = YES;
336 | };
337 | name = Release;
338 | };
339 | 096275B31EF4E007003BB2C3 /* Debug */ = {
340 | isa = XCBuildConfiguration;
341 | baseConfigurationReference = E3F0D0F5106B8EAA7E22CF9C /* Pods-DeallocCallback.debug.xcconfig */;
342 | buildSettings = {
343 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
344 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
345 | CODE_SIGN_STYLE = Manual;
346 | DEVELOPMENT_TEAM = "";
347 | INFOPLIST_FILE = "$(SRCROOT)/MSDeallocCallback/Info.plist";
348 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
349 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
350 | PRODUCT_BUNDLE_IDENTIFIER = jzj.DeallocCallback;
351 | PRODUCT_NAME = "$(TARGET_NAME)";
352 | PROVISIONING_PROFILE_SPECIFIER = "";
353 | TARGETED_DEVICE_FAMILY = 1;
354 | };
355 | name = Debug;
356 | };
357 | 096275B41EF4E007003BB2C3 /* Release */ = {
358 | isa = XCBuildConfiguration;
359 | baseConfigurationReference = DAE32FFAF9428281451CF244 /* Pods-DeallocCallback.release.xcconfig */;
360 | buildSettings = {
361 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
362 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
363 | CODE_SIGN_STYLE = Manual;
364 | DEVELOPMENT_TEAM = "";
365 | INFOPLIST_FILE = "$(SRCROOT)/MSDeallocCallback/Info.plist";
366 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
367 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
368 | PRODUCT_BUNDLE_IDENTIFIER = jzj.DeallocCallback;
369 | PRODUCT_NAME = "$(TARGET_NAME)";
370 | PROVISIONING_PROFILE_SPECIFIER = "";
371 | TARGETED_DEVICE_FAMILY = 1;
372 | };
373 | name = Release;
374 | };
375 | /* End XCBuildConfiguration section */
376 |
377 | /* Begin XCConfigurationList section */
378 | 096275961EF4E006003BB2C3 /* Build configuration list for PBXProject "MSDeallocCallback" */ = {
379 | isa = XCConfigurationList;
380 | buildConfigurations = (
381 | 096275B01EF4E007003BB2C3 /* Debug */,
382 | 096275B11EF4E007003BB2C3 /* Release */,
383 | );
384 | defaultConfigurationIsVisible = 0;
385 | defaultConfigurationName = Release;
386 | };
387 | 096275B21EF4E007003BB2C3 /* Build configuration list for PBXNativeTarget "MSDeallocCallback" */ = {
388 | isa = XCConfigurationList;
389 | buildConfigurations = (
390 | 096275B31EF4E007003BB2C3 /* Debug */,
391 | 096275B41EF4E007003BB2C3 /* Release */,
392 | );
393 | defaultConfigurationIsVisible = 0;
394 | defaultConfigurationName = Release;
395 | };
396 | /* End XCConfigurationList section */
397 | };
398 | rootObject = 096275931EF4E006003BB2C3 /* Project object */;
399 | }
400 |
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // DeallocCallback
4 | //
5 | // Created by J on 2017/6/17.
6 | // Copyright © 2017年 J. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // DeallocCallback
4 | //
5 | // Created by J on 2017/6/17.
6 | // Copyright © 2017年 J. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 | #import "ViewController.h"
11 |
12 | @implementation AppDelegate
13 |
14 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
15 | self.window = [UIWindow new];
16 | self.window.frame = [UIScreen mainScreen].bounds;
17 | self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:ViewController.new];
18 | [self.window makeKeyAndVisible];
19 | return YES;
20 | }
21 | @end
22 |
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "icon-20@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "icon-20@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "icon-29.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "icon-29@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "29x29",
29 | "idiom" : "iphone",
30 | "filename" : "icon-29@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "icon-40@2x.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "40x40",
41 | "idiom" : "iphone",
42 | "filename" : "icon-40@3x.png",
43 | "scale" : "3x"
44 | },
45 | {
46 | "size" : "57x57",
47 | "idiom" : "iphone",
48 | "filename" : "icon-57.png",
49 | "scale" : "1x"
50 | },
51 | {
52 | "size" : "57x57",
53 | "idiom" : "iphone",
54 | "filename" : "icon-57@2x.png",
55 | "scale" : "2x"
56 | },
57 | {
58 | "size" : "60x60",
59 | "idiom" : "iphone",
60 | "filename" : "icon-60@2x.png",
61 | "scale" : "2x"
62 | },
63 | {
64 | "size" : "60x60",
65 | "idiom" : "iphone",
66 | "filename" : "icon-60@3x.png",
67 | "scale" : "3x"
68 | },
69 | {
70 | "size" : "20x20",
71 | "idiom" : "ipad",
72 | "filename" : "icon-20-ipad.png",
73 | "scale" : "1x"
74 | },
75 | {
76 | "size" : "20x20",
77 | "idiom" : "ipad",
78 | "filename" : "icon-20@2x-ipad.png",
79 | "scale" : "2x"
80 | },
81 | {
82 | "size" : "29x29",
83 | "idiom" : "ipad",
84 | "filename" : "icon-29-ipad.png",
85 | "scale" : "1x"
86 | },
87 | {
88 | "size" : "29x29",
89 | "idiom" : "ipad",
90 | "filename" : "icon-29@2x-ipad.png",
91 | "scale" : "2x"
92 | },
93 | {
94 | "size" : "40x40",
95 | "idiom" : "ipad",
96 | "filename" : "icon-40.png",
97 | "scale" : "1x"
98 | },
99 | {
100 | "size" : "40x40",
101 | "idiom" : "ipad",
102 | "filename" : "icon-40@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "50x50",
107 | "idiom" : "ipad",
108 | "filename" : "icon-50.png",
109 | "scale" : "1x"
110 | },
111 | {
112 | "size" : "50x50",
113 | "idiom" : "ipad",
114 | "filename" : "icon-50@2x.png",
115 | "scale" : "2x"
116 | },
117 | {
118 | "size" : "72x72",
119 | "idiom" : "ipad",
120 | "filename" : "icon-72.png",
121 | "scale" : "1x"
122 | },
123 | {
124 | "size" : "72x72",
125 | "idiom" : "ipad",
126 | "filename" : "icon-72@2x.png",
127 | "scale" : "2x"
128 | },
129 | {
130 | "size" : "76x76",
131 | "idiom" : "ipad",
132 | "filename" : "icon-76.png",
133 | "scale" : "1x"
134 | },
135 | {
136 | "size" : "76x76",
137 | "idiom" : "ipad",
138 | "filename" : "icon-76@2x.png",
139 | "scale" : "2x"
140 | },
141 | {
142 | "size" : "83.5x83.5",
143 | "idiom" : "ipad",
144 | "filename" : "icon-83.5@2x.png",
145 | "scale" : "2x"
146 | },
147 | {
148 | "size" : "1024x1024",
149 | "idiom" : "ios-marketing",
150 | "filename" : "icon-1024@2x.png",
151 | "scale" : "1x"
152 | }
153 | ],
154 | "info" : {
155 | "version" : 1,
156 | "author" : "xcode"
157 | }
158 | }
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-1024@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-1024@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-29.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-40.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-50.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-57.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-72.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-76.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitWOSBiOS56_768x1004pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitWOSBiOS56_768x1004pt.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitWOSBiOS56_768x1004pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitWOSBiOS56_768x1004pt@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS56_768x1024pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS56_768x1024pt.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS56_768x1024pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS56_768x1024pt@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS789_768x1024pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS789_768x1024pt.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS789_768x1024pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS789_768x1024pt@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS56_320x480pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS56_320x480pt.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS56_320x480pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS56_320x480pt@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS56_320x568pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS56_320x568pt@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS789_320x480pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS789_320x480pt@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS789_320x568pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS789_320x568pt@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS89_375x667pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS89_375x667pt@2x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS89_414x736pt@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tempAccountA/MSCustomOperation/42f73e1da8df49011736e16ee2087360cc335c12/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS89_414x736pt@3x.png
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Assets.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "extent" : "full-screen",
5 | "idiom" : "iphone",
6 | "subtype" : "736h",
7 | "filename" : "1024iPhonePortraitiOS89_414x736pt@3x.png",
8 | "minimum-system-version" : "8.0",
9 | "orientation" : "portrait",
10 | "scale" : "3x"
11 | },
12 | {
13 | "extent" : "full-screen",
14 | "idiom" : "iphone",
15 | "subtype" : "667h",
16 | "filename" : "1024iPhonePortraitiOS89_375x667pt@2x.png",
17 | "minimum-system-version" : "8.0",
18 | "orientation" : "portrait",
19 | "scale" : "2x"
20 | },
21 | {
22 | "orientation" : "portrait",
23 | "idiom" : "iphone",
24 | "filename" : "1024iPhonePortraitiOS789_320x480pt@2x.png",
25 | "extent" : "full-screen",
26 | "minimum-system-version" : "7.0",
27 | "scale" : "2x"
28 | },
29 | {
30 | "extent" : "full-screen",
31 | "idiom" : "iphone",
32 | "subtype" : "retina4",
33 | "filename" : "1024iPhonePortraitiOS789_320x568pt@2x.png",
34 | "minimum-system-version" : "7.0",
35 | "orientation" : "portrait",
36 | "scale" : "2x"
37 | },
38 | {
39 | "orientation" : "portrait",
40 | "idiom" : "ipad",
41 | "filename" : "1024iPadPortraitiOS789_768x1024pt.png",
42 | "extent" : "full-screen",
43 | "minimum-system-version" : "7.0",
44 | "scale" : "1x"
45 | },
46 | {
47 | "orientation" : "portrait",
48 | "idiom" : "ipad",
49 | "filename" : "1024iPadPortraitiOS789_768x1024pt@2x.png",
50 | "extent" : "full-screen",
51 | "minimum-system-version" : "7.0",
52 | "scale" : "2x"
53 | },
54 | {
55 | "orientation" : "portrait",
56 | "idiom" : "iphone",
57 | "filename" : "1024iPhonePortraitiOS56_320x480pt.png",
58 | "extent" : "full-screen",
59 | "scale" : "1x"
60 | },
61 | {
62 | "orientation" : "portrait",
63 | "idiom" : "iphone",
64 | "filename" : "1024iPhonePortraitiOS56_320x480pt@2x.png",
65 | "extent" : "full-screen",
66 | "scale" : "2x"
67 | },
68 | {
69 | "orientation" : "portrait",
70 | "idiom" : "iphone",
71 | "filename" : "1024iPhonePortraitiOS56_320x568pt@2x.png",
72 | "extent" : "full-screen",
73 | "subtype" : "retina4",
74 | "scale" : "2x"
75 | },
76 | {
77 | "orientation" : "portrait",
78 | "idiom" : "ipad",
79 | "filename" : "1024iPadPortraitWOSBiOS56_768x1004pt.png",
80 | "extent" : "to-status-bar",
81 | "scale" : "1x"
82 | },
83 | {
84 | "orientation" : "portrait",
85 | "idiom" : "ipad",
86 | "filename" : "1024iPadPortraitiOS56_768x1024pt.png",
87 | "extent" : "full-screen",
88 | "scale" : "1x"
89 | },
90 | {
91 | "orientation" : "portrait",
92 | "idiom" : "ipad",
93 | "filename" : "1024iPadPortraitWOSBiOS56_768x1004pt@2x.png",
94 | "extent" : "to-status-bar",
95 | "scale" : "2x"
96 | },
97 | {
98 | "orientation" : "portrait",
99 | "idiom" : "ipad",
100 | "filename" : "1024iPadPortraitiOS56_768x1024pt@2x.png",
101 | "extent" : "full-screen",
102 | "scale" : "2x"
103 | }
104 | ],
105 | "info" : {
106 | "version" : 1,
107 | "author" : "xcode"
108 | }
109 | }
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UILaunchStoryboardName
24 | LaunchScreen
25 | UIRequiredDeviceCapabilities
26 |
27 | armv7
28 |
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 |
33 | UISupportedInterfaceOrientations~ipad
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationPortraitUpsideDown
37 | UIInterfaceOrientationLandscapeLeft
38 | UIInterfaceOrientationLandscapeRight
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/SecondViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SecondViewController.h
3 | //
4 | // Created by J on 2017/6/17.
5 | //
6 |
7 | #import
8 |
9 | @interface SecondViewController : UIViewController
10 |
11 | @end
12 |
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/SecondViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // SecondViewController.m
3 | //
4 | // Created by J on 2017/6/17.
5 | //
6 |
7 | #import "SecondViewController.h"
8 |
9 | @interface SecondViewController ()
10 |
11 | @end
12 |
13 | @implementation SecondViewController
14 |
15 | - (void)viewDidLoad {
16 | [super viewDidLoad];
17 |
18 | self.view.backgroundColor = [UIColor whiteColor];
19 | }
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // DeallocCallback
4 | //
5 | // Created by J on 2017/6/17.
6 | // Copyright © 2017年 J. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // DeallocCallback
4 | //
5 | // Created by J on 2017/6/17.
6 | // Copyright © 2017年 J. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import "SecondViewController.h"
11 | #import "NSObject+MSDeallocCallBack.h"
12 |
13 | @interface ViewController ()
14 | @property(nonatomic,assign)SecondViewController* sc;
15 |
16 | @end
17 |
18 | @implementation ViewController
19 |
20 | - (void)viewDidLoad {
21 | [super viewDidLoad];
22 | self.view.backgroundColor = [UIColor whiteColor];
23 | }
24 |
25 |
26 |
27 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
28 |
29 |
30 | NSLog(@"xxxx%@",self.sc);
31 | SecondViewController* sc = [SecondViewController new];
32 | [self.navigationController pushViewController:sc animated:YES];
33 | self.sc = sc;
34 |
35 | WEAKSELF
36 | [self.sc deallocCallBack:^{
37 | weakSelf.sc = nil;
38 | NSLog(@"xxxx%@",weakSelf.sc);
39 |
40 | }];
41 | }
42 |
43 |
44 | @end
45 |
--------------------------------------------------------------------------------
/DEMO/MSDeallocCallback/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // DeallocCallback
4 | //
5 | // Created by J on 2017/6/17.
6 | // Copyright © 2017年 J. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/DEMO/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'DeallocCallback' do
5 | # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
6 | # use_frameworks!
7 | pod “MSDeallocCallBack”
8 | # Pods for DeallocCallback
9 |
10 | end
11 |
--------------------------------------------------------------------------------
/DEMO/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - MSDeallocCallBack (1.0.0)
3 |
4 | DEPENDENCIES:
5 | - MSDeallocCallBack
6 |
7 | SPEC CHECKSUMS:
8 | MSDeallocCallBack: 1218849fc26d4fd8a99a8ac857482b464df97904
9 |
10 | PODFILE CHECKSUM: 71b67bc6918cc8a738660d959773a5ec74e11c94
11 |
12 | COCOAPODS: 1.1.1
13 |
--------------------------------------------------------------------------------
/DEMO/Pods/Headers/Private/MSDeallocCallBack/NSObject+MSDeallocCallBack.h:
--------------------------------------------------------------------------------
1 | ../../../MSDeallocCallBack/DeallocCallback/NSObject+MSDeallocCallBack.h
--------------------------------------------------------------------------------
/DEMO/Pods/Headers/Public/MSDeallocCallBack/NSObject+MSDeallocCallBack.h:
--------------------------------------------------------------------------------
1 | ../../../MSDeallocCallBack/DeallocCallback/NSObject+MSDeallocCallBack.h
--------------------------------------------------------------------------------
/DEMO/Pods/MSDeallocCallBack/DeallocCallback/NSObject+MSDeallocCallBack.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+MSDeallocCallBack.h
3 | // DeallocCallback
4 | //
5 | // Created by J on 2017/6/17.
6 | // Copyright © 2017年 J. All rights reserved.
7 | //
8 |
9 | #import
10 | typedef void (^DeallocExecutorBlock)(void);
11 | #define WEAKSELF __weak typeof(self) weakSelf = self;
12 | @interface NSObject (MSDeallocCallBack)
13 |
14 | - (void)deallocCallBack:(DeallocExecutorBlock)block;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/DEMO/Pods/MSDeallocCallBack/DeallocCallback/NSObject+MSDeallocCallBack.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+MSDeallocCallBack.m
3 | // DeallocCallback
4 | //
5 | // Created by J on 2017/6/17.
6 | // Copyright © 2017年 J. All rights reserved.
7 | //
8 |
9 |
10 |
11 | #import "NSObject+MSDeallocCallBack.h"
12 | #import
13 |
14 | const void *kDeallocExecutorsKey = &kDeallocExecutorsKey;
15 | const void *kBlockKey = &kBlockKey;
16 |
17 | @interface CallBackItem : NSObject
18 |
19 | @end
20 | @implementation NSObject (MSDeallocCallBack)
21 |
22 | - (void)deallocCallBack:(DeallocExecutorBlock)block{
23 |
24 |
25 | if (!block) return;
26 |
27 | CallBackItem* obj = [CallBackItem new];
28 | objc_setAssociatedObject(self, kDeallocExecutorsKey, obj, OBJC_ASSOCIATION_RETAIN);
29 |
30 | objc_setAssociatedObject(obj, kBlockKey,block, OBJC_ASSOCIATION_COPY_NONATOMIC);
31 | }
32 |
33 | @end
34 |
35 |
36 |
37 |
38 | @implementation CallBackItem
39 |
40 | - (void)dealloc{
41 |
42 | DeallocExecutorBlock block = objc_getAssociatedObject(self,kBlockKey);
43 | block ? block() : nil;
44 |
45 | }
46 | @end
47 |
--------------------------------------------------------------------------------
/DEMO/Pods/MSDeallocCallBack/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/DEMO/Pods/MSDeallocCallBack/README.md:
--------------------------------------------------------------------------------
1 | # MSDeallocCallback
--------------------------------------------------------------------------------
/DEMO/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - MSDeallocCallBack (1.0.0)
3 |
4 | DEPENDENCIES:
5 | - MSDeallocCallBack
6 |
7 | SPEC CHECKSUMS:
8 | MSDeallocCallBack: 1218849fc26d4fd8a99a8ac857482b464df97904
9 |
10 | PODFILE CHECKSUM: 71b67bc6918cc8a738660d959773a5ec74e11c94
11 |
12 | COCOAPODS: 1.1.1
13 |
--------------------------------------------------------------------------------
/DEMO/Pods/Pods.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 0A11AAA52291376A00BEF9D8E3B4DC98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */; };
11 | 3EDFBC4937A0CDB9F02B396B28836CE9 /* NSObject+MSDeallocCallBack.h in Headers */ = {isa = PBXBuildFile; fileRef = 6935C83C29675F493D8DDF60326380D8 /* NSObject+MSDeallocCallBack.h */; settings = {ATTRIBUTES = (Public, ); }; };
12 | 8E9D37E92F0C0ADF64F456CDF259DDA4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */; };
13 | 9677B65C2C8F74039E59C1527DE5DCA2 /* NSObject+MSDeallocCallBack.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EE7F70B810E6606E4CBE44F7B7754BA /* NSObject+MSDeallocCallBack.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; };
14 | C623E04F773CFF79E78C64880298BD3C /* Pods-DeallocCallback-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D29ED17ACB6C83AD83D9EA0C5264FAC8 /* Pods-DeallocCallback-dummy.m */; };
15 | C76A39B1435C467C397DC5F17ED92F5B /* MSDeallocCallBack-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F799F8FACB7B7A8015595D69948D3F6 /* MSDeallocCallBack-dummy.m */; };
16 | /* End PBXBuildFile section */
17 |
18 | /* Begin PBXContainerItemProxy section */
19 | B3923E0B21DC37BB3BDAD909651B6B5D /* PBXContainerItemProxy */ = {
20 | isa = PBXContainerItemProxy;
21 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
22 | proxyType = 1;
23 | remoteGlobalIDString = 8885C2213A7ED3764CB5A6D4D3ECC378;
24 | remoteInfo = MSDeallocCallBack;
25 | };
26 | /* End PBXContainerItemProxy section */
27 |
28 | /* Begin PBXFileReference section */
29 | 6935C83C29675F493D8DDF60326380D8 /* NSObject+MSDeallocCallBack.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MSDeallocCallBack.h"; path = "DeallocCallback/NSObject+MSDeallocCallBack.h"; sourceTree = ""; };
30 | 6EE7F70B810E6606E4CBE44F7B7754BA /* NSObject+MSDeallocCallBack.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MSDeallocCallBack.m"; path = "DeallocCallback/NSObject+MSDeallocCallBack.m"; sourceTree = ""; };
31 | 6F799F8FACB7B7A8015595D69948D3F6 /* MSDeallocCallBack-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MSDeallocCallBack-dummy.m"; sourceTree = ""; };
32 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
33 | 9468779A3812D5B5673AA11F6A902D90 /* Pods-DeallocCallback.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DeallocCallback.debug.xcconfig"; sourceTree = ""; };
34 | 9BB06C16176EDE8E9F1285500ECE1FB6 /* Pods-DeallocCallback.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DeallocCallback.release.xcconfig"; sourceTree = ""; };
35 | A0F4B9E13B6345C8D224933C971BB419 /* MSDeallocCallBack-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MSDeallocCallBack-prefix.pch"; sourceTree = ""; };
36 | ACC1CD5ED8ED010F2D81E93EF685911E /* Pods-DeallocCallback-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DeallocCallback-acknowledgements.markdown"; sourceTree = ""; };
37 | B803C1EAD11F4A5ACE7205347D878ECF /* Pods-DeallocCallback-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DeallocCallback-resources.sh"; sourceTree = ""; };
38 | CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
39 | CBBD4EE0FA1052E2858FDE3927C6F5E0 /* Pods-DeallocCallback-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DeallocCallback-frameworks.sh"; sourceTree = ""; };
40 | D29ED17ACB6C83AD83D9EA0C5264FAC8 /* Pods-DeallocCallback-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DeallocCallback-dummy.m"; sourceTree = ""; };
41 | D9DC1F0B5A1F67370908F28E74E8372F /* libPods-DeallocCallback.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DeallocCallback.a"; sourceTree = BUILT_PRODUCTS_DIR; };
42 | E61D07733D51012DBACB2C1B2AEB0967 /* MSDeallocCallBack.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MSDeallocCallBack.xcconfig; sourceTree = ""; };
43 | EF674926D4C145E533965EA9A94D984C /* Pods-DeallocCallback-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DeallocCallback-acknowledgements.plist"; sourceTree = ""; };
44 | F190A2D51F04C82AEA0B91823A3A1ABE /* libMSDeallocCallBack.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMSDeallocCallBack.a; sourceTree = BUILT_PRODUCTS_DIR; };
45 | /* End PBXFileReference section */
46 |
47 | /* Begin PBXFrameworksBuildPhase section */
48 | 8FEF9E5C94F57690F5C7B52D7FABFDBE /* Frameworks */ = {
49 | isa = PBXFrameworksBuildPhase;
50 | buildActionMask = 2147483647;
51 | files = (
52 | 0A11AAA52291376A00BEF9D8E3B4DC98 /* Foundation.framework in Frameworks */,
53 | );
54 | runOnlyForDeploymentPostprocessing = 0;
55 | };
56 | CA104D60427739318B6564CA7572FDE2 /* Frameworks */ = {
57 | isa = PBXFrameworksBuildPhase;
58 | buildActionMask = 2147483647;
59 | files = (
60 | 8E9D37E92F0C0ADF64F456CDF259DDA4 /* Foundation.framework in Frameworks */,
61 | );
62 | runOnlyForDeploymentPostprocessing = 0;
63 | };
64 | /* End PBXFrameworksBuildPhase section */
65 |
66 | /* Begin PBXGroup section */
67 | 0070D18C54C439F4C61E1D34228CE6C0 /* Products */ = {
68 | isa = PBXGroup;
69 | children = (
70 | F190A2D51F04C82AEA0B91823A3A1ABE /* libMSDeallocCallBack.a */,
71 | D9DC1F0B5A1F67370908F28E74E8372F /* libPods-DeallocCallback.a */,
72 | );
73 | name = Products;
74 | sourceTree = "";
75 | };
76 | 032D0EE6AE4EC3E3ED6AA17C5F4B6919 /* Targets Support Files */ = {
77 | isa = PBXGroup;
78 | children = (
79 | F87729E0B44EE60B8FF520C1D3C111DD /* Pods-DeallocCallback */,
80 | );
81 | name = "Targets Support Files";
82 | sourceTree = "";
83 | };
84 | 2F3F28E75B182ABACA5D185629CE710C /* MSDeallocCallBack */ = {
85 | isa = PBXGroup;
86 | children = (
87 | 6935C83C29675F493D8DDF60326380D8 /* NSObject+MSDeallocCallBack.h */,
88 | 6EE7F70B810E6606E4CBE44F7B7754BA /* NSObject+MSDeallocCallBack.m */,
89 | D92DCFC490EF08CC01EC81604E355E0D /* Support Files */,
90 | );
91 | path = MSDeallocCallBack;
92 | sourceTree = "";
93 | };
94 | 43AC254ABE9D992D7C807BAC42AC3816 /* Pods */ = {
95 | isa = PBXGroup;
96 | children = (
97 | 2F3F28E75B182ABACA5D185629CE710C /* MSDeallocCallBack */,
98 | );
99 | name = Pods;
100 | sourceTree = "";
101 | };
102 | 7531C8F8DE19F1AA3C8A7AC97A91DC29 /* iOS */ = {
103 | isa = PBXGroup;
104 | children = (
105 | CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */,
106 | );
107 | name = iOS;
108 | sourceTree = "";
109 | };
110 | 7DB346D0F39D3F0E887471402A8071AB = {
111 | isa = PBXGroup;
112 | children = (
113 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */,
114 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */,
115 | 43AC254ABE9D992D7C807BAC42AC3816 /* Pods */,
116 | 0070D18C54C439F4C61E1D34228CE6C0 /* Products */,
117 | 032D0EE6AE4EC3E3ED6AA17C5F4B6919 /* Targets Support Files */,
118 | );
119 | sourceTree = "";
120 | };
121 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = {
122 | isa = PBXGroup;
123 | children = (
124 | 7531C8F8DE19F1AA3C8A7AC97A91DC29 /* iOS */,
125 | );
126 | name = Frameworks;
127 | sourceTree = "";
128 | };
129 | D92DCFC490EF08CC01EC81604E355E0D /* Support Files */ = {
130 | isa = PBXGroup;
131 | children = (
132 | E61D07733D51012DBACB2C1B2AEB0967 /* MSDeallocCallBack.xcconfig */,
133 | 6F799F8FACB7B7A8015595D69948D3F6 /* MSDeallocCallBack-dummy.m */,
134 | A0F4B9E13B6345C8D224933C971BB419 /* MSDeallocCallBack-prefix.pch */,
135 | );
136 | name = "Support Files";
137 | path = "../Target Support Files/MSDeallocCallBack";
138 | sourceTree = "";
139 | };
140 | F87729E0B44EE60B8FF520C1D3C111DD /* Pods-DeallocCallback */ = {
141 | isa = PBXGroup;
142 | children = (
143 | ACC1CD5ED8ED010F2D81E93EF685911E /* Pods-DeallocCallback-acknowledgements.markdown */,
144 | EF674926D4C145E533965EA9A94D984C /* Pods-DeallocCallback-acknowledgements.plist */,
145 | D29ED17ACB6C83AD83D9EA0C5264FAC8 /* Pods-DeallocCallback-dummy.m */,
146 | CBBD4EE0FA1052E2858FDE3927C6F5E0 /* Pods-DeallocCallback-frameworks.sh */,
147 | B803C1EAD11F4A5ACE7205347D878ECF /* Pods-DeallocCallback-resources.sh */,
148 | 9468779A3812D5B5673AA11F6A902D90 /* Pods-DeallocCallback.debug.xcconfig */,
149 | 9BB06C16176EDE8E9F1285500ECE1FB6 /* Pods-DeallocCallback.release.xcconfig */,
150 | );
151 | name = "Pods-DeallocCallback";
152 | path = "Target Support Files/Pods-DeallocCallback";
153 | sourceTree = "";
154 | };
155 | /* End PBXGroup section */
156 |
157 | /* Begin PBXHeadersBuildPhase section */
158 | EBD56C67428A10980E4B9203E09F6395 /* Headers */ = {
159 | isa = PBXHeadersBuildPhase;
160 | buildActionMask = 2147483647;
161 | files = (
162 | 3EDFBC4937A0CDB9F02B396B28836CE9 /* NSObject+MSDeallocCallBack.h in Headers */,
163 | );
164 | runOnlyForDeploymentPostprocessing = 0;
165 | };
166 | /* End PBXHeadersBuildPhase section */
167 |
168 | /* Begin PBXNativeTarget section */
169 | 8885C2213A7ED3764CB5A6D4D3ECC378 /* MSDeallocCallBack */ = {
170 | isa = PBXNativeTarget;
171 | buildConfigurationList = FB4DC1EDF459305C657411DDFD8C572E /* Build configuration list for PBXNativeTarget "MSDeallocCallBack" */;
172 | buildPhases = (
173 | 188994E752DD2AE175EF9FFC9EF861FA /* Sources */,
174 | CA104D60427739318B6564CA7572FDE2 /* Frameworks */,
175 | EBD56C67428A10980E4B9203E09F6395 /* Headers */,
176 | );
177 | buildRules = (
178 | );
179 | dependencies = (
180 | );
181 | name = MSDeallocCallBack;
182 | productName = MSDeallocCallBack;
183 | productReference = F190A2D51F04C82AEA0B91823A3A1ABE /* libMSDeallocCallBack.a */;
184 | productType = "com.apple.product-type.library.static";
185 | };
186 | FC3EA21647CFE77759F7ACE820B9F601 /* Pods-DeallocCallback */ = {
187 | isa = PBXNativeTarget;
188 | buildConfigurationList = BDC4CD55FA420D10379490280A1ED2CE /* Build configuration list for PBXNativeTarget "Pods-DeallocCallback" */;
189 | buildPhases = (
190 | 62384BCDA6F30373F9A37C8E207013B2 /* Sources */,
191 | 8FEF9E5C94F57690F5C7B52D7FABFDBE /* Frameworks */,
192 | );
193 | buildRules = (
194 | );
195 | dependencies = (
196 | 15D0817D523EF3EFDF356BADDE240BC2 /* PBXTargetDependency */,
197 | );
198 | name = "Pods-DeallocCallback";
199 | productName = "Pods-DeallocCallback";
200 | productReference = D9DC1F0B5A1F67370908F28E74E8372F /* libPods-DeallocCallback.a */;
201 | productType = "com.apple.product-type.library.static";
202 | };
203 | /* End PBXNativeTarget section */
204 |
205 | /* Begin PBXProject section */
206 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = {
207 | isa = PBXProject;
208 | attributes = {
209 | LastSwiftUpdateCheck = 0730;
210 | LastUpgradeCheck = 0910;
211 | };
212 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */;
213 | compatibilityVersion = "Xcode 3.2";
214 | developmentRegion = English;
215 | hasScannedForEncodings = 0;
216 | knownRegions = (
217 | en,
218 | );
219 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB;
220 | productRefGroup = 0070D18C54C439F4C61E1D34228CE6C0 /* Products */;
221 | projectDirPath = "";
222 | projectRoot = "";
223 | targets = (
224 | 8885C2213A7ED3764CB5A6D4D3ECC378 /* MSDeallocCallBack */,
225 | FC3EA21647CFE77759F7ACE820B9F601 /* Pods-DeallocCallback */,
226 | );
227 | };
228 | /* End PBXProject section */
229 |
230 | /* Begin PBXSourcesBuildPhase section */
231 | 188994E752DD2AE175EF9FFC9EF861FA /* Sources */ = {
232 | isa = PBXSourcesBuildPhase;
233 | buildActionMask = 2147483647;
234 | files = (
235 | C76A39B1435C467C397DC5F17ED92F5B /* MSDeallocCallBack-dummy.m in Sources */,
236 | 9677B65C2C8F74039E59C1527DE5DCA2 /* NSObject+MSDeallocCallBack.m in Sources */,
237 | );
238 | runOnlyForDeploymentPostprocessing = 0;
239 | };
240 | 62384BCDA6F30373F9A37C8E207013B2 /* Sources */ = {
241 | isa = PBXSourcesBuildPhase;
242 | buildActionMask = 2147483647;
243 | files = (
244 | C623E04F773CFF79E78C64880298BD3C /* Pods-DeallocCallback-dummy.m in Sources */,
245 | );
246 | runOnlyForDeploymentPostprocessing = 0;
247 | };
248 | /* End PBXSourcesBuildPhase section */
249 |
250 | /* Begin PBXTargetDependency section */
251 | 15D0817D523EF3EFDF356BADDE240BC2 /* PBXTargetDependency */ = {
252 | isa = PBXTargetDependency;
253 | name = MSDeallocCallBack;
254 | target = 8885C2213A7ED3764CB5A6D4D3ECC378 /* MSDeallocCallBack */;
255 | targetProxy = B3923E0B21DC37BB3BDAD909651B6B5D /* PBXContainerItemProxy */;
256 | };
257 | /* End PBXTargetDependency section */
258 |
259 | /* Begin XCBuildConfiguration section */
260 | 662AB2BD810C7A64B2F07CC5A6C20702 /* Debug */ = {
261 | isa = XCBuildConfiguration;
262 | baseConfigurationReference = 9468779A3812D5B5673AA11F6A902D90 /* Pods-DeallocCallback.debug.xcconfig */;
263 | buildSettings = {
264 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
265 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
266 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
267 | DEBUG_INFORMATION_FORMAT = dwarf;
268 | ENABLE_STRICT_OBJC_MSGSEND = YES;
269 | GCC_NO_COMMON_BLOCKS = YES;
270 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
271 | MACH_O_TYPE = staticlib;
272 | MTL_ENABLE_DEBUG_INFO = YES;
273 | OTHER_LDFLAGS = "";
274 | OTHER_LIBTOOLFLAGS = "";
275 | PODS_ROOT = "$(SRCROOT)";
276 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
277 | PRODUCT_NAME = "$(TARGET_NAME)";
278 | SDKROOT = iphoneos;
279 | SKIP_INSTALL = YES;
280 | };
281 | name = Debug;
282 | };
283 | 79B0C2E66EFA9917ED6EDDB8FC6A7684 /* Release */ = {
284 | isa = XCBuildConfiguration;
285 | buildSettings = {
286 | ALWAYS_SEARCH_USER_PATHS = NO;
287 | CLANG_ANALYZER_NONNULL = YES;
288 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
289 | CLANG_CXX_LIBRARY = "libc++";
290 | CLANG_ENABLE_MODULES = YES;
291 | CLANG_ENABLE_OBJC_ARC = YES;
292 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
293 | CLANG_WARN_BOOL_CONVERSION = YES;
294 | CLANG_WARN_COMMA = YES;
295 | CLANG_WARN_CONSTANT_CONVERSION = YES;
296 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
297 | CLANG_WARN_EMPTY_BODY = YES;
298 | CLANG_WARN_ENUM_CONVERSION = YES;
299 | CLANG_WARN_INFINITE_RECURSION = YES;
300 | CLANG_WARN_INT_CONVERSION = YES;
301 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
302 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
303 | CLANG_WARN_OBJC_ROOT_CLASS = YES;
304 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
305 | CLANG_WARN_STRICT_PROTOTYPES = YES;
306 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
307 | CLANG_WARN_UNREACHABLE_CODE = YES;
308 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
309 | CODE_SIGNING_REQUIRED = NO;
310 | COPY_PHASE_STRIP = YES;
311 | ENABLE_NS_ASSERTIONS = NO;
312 | ENABLE_STRICT_OBJC_MSGSEND = YES;
313 | GCC_C_LANGUAGE_STANDARD = gnu99;
314 | GCC_NO_COMMON_BLOCKS = YES;
315 | GCC_PREPROCESSOR_DEFINITIONS = (
316 | "POD_CONFIGURATION_RELEASE=1",
317 | "$(inherited)",
318 | );
319 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
320 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
321 | GCC_WARN_UNDECLARED_SELECTOR = YES;
322 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
323 | GCC_WARN_UNUSED_FUNCTION = YES;
324 | GCC_WARN_UNUSED_VARIABLE = YES;
325 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
326 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/;
327 | STRIP_INSTALLED_PRODUCT = NO;
328 | SYMROOT = "${SRCROOT}/../build";
329 | VALIDATE_PRODUCT = YES;
330 | };
331 | name = Release;
332 | };
333 | A33F873AC3F4CEF09F6BC6F91247F59F /* Debug */ = {
334 | isa = XCBuildConfiguration;
335 | baseConfigurationReference = E61D07733D51012DBACB2C1B2AEB0967 /* MSDeallocCallBack.xcconfig */;
336 | buildSettings = {
337 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
338 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
339 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
340 | DEBUG_INFORMATION_FORMAT = dwarf;
341 | ENABLE_STRICT_OBJC_MSGSEND = YES;
342 | GCC_NO_COMMON_BLOCKS = YES;
343 | GCC_PREFIX_HEADER = "Target Support Files/MSDeallocCallBack/MSDeallocCallBack-prefix.pch";
344 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
345 | MTL_ENABLE_DEBUG_INFO = YES;
346 | OTHER_LDFLAGS = "";
347 | OTHER_LIBTOOLFLAGS = "";
348 | PRIVATE_HEADERS_FOLDER_PATH = "";
349 | PRODUCT_NAME = "$(TARGET_NAME)";
350 | PUBLIC_HEADERS_FOLDER_PATH = "";
351 | SDKROOT = iphoneos;
352 | SKIP_INSTALL = YES;
353 | };
354 | name = Debug;
355 | };
356 | CF7953F66E785E8876EB4D370D777D50 /* Debug */ = {
357 | isa = XCBuildConfiguration;
358 | buildSettings = {
359 | ALWAYS_SEARCH_USER_PATHS = NO;
360 | CLANG_ANALYZER_NONNULL = YES;
361 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
362 | CLANG_CXX_LIBRARY = "libc++";
363 | CLANG_ENABLE_MODULES = YES;
364 | CLANG_ENABLE_OBJC_ARC = YES;
365 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
366 | CLANG_WARN_BOOL_CONVERSION = YES;
367 | CLANG_WARN_COMMA = YES;
368 | CLANG_WARN_CONSTANT_CONVERSION = YES;
369 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
370 | CLANG_WARN_EMPTY_BODY = YES;
371 | CLANG_WARN_ENUM_CONVERSION = YES;
372 | CLANG_WARN_INFINITE_RECURSION = YES;
373 | CLANG_WARN_INT_CONVERSION = YES;
374 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
375 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
376 | CLANG_WARN_OBJC_ROOT_CLASS = YES;
377 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
378 | CLANG_WARN_STRICT_PROTOTYPES = YES;
379 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
380 | CLANG_WARN_UNREACHABLE_CODE = YES;
381 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
382 | CODE_SIGNING_REQUIRED = NO;
383 | COPY_PHASE_STRIP = NO;
384 | ENABLE_STRICT_OBJC_MSGSEND = YES;
385 | ENABLE_TESTABILITY = YES;
386 | GCC_C_LANGUAGE_STANDARD = gnu99;
387 | GCC_DYNAMIC_NO_PIC = NO;
388 | GCC_NO_COMMON_BLOCKS = YES;
389 | GCC_OPTIMIZATION_LEVEL = 0;
390 | GCC_PREPROCESSOR_DEFINITIONS = (
391 | "POD_CONFIGURATION_DEBUG=1",
392 | "DEBUG=1",
393 | "$(inherited)",
394 | );
395 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
396 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
397 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
398 | GCC_WARN_UNDECLARED_SELECTOR = YES;
399 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
400 | GCC_WARN_UNUSED_FUNCTION = YES;
401 | GCC_WARN_UNUSED_VARIABLE = YES;
402 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
403 | ONLY_ACTIVE_ARCH = YES;
404 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/;
405 | STRIP_INSTALLED_PRODUCT = NO;
406 | SYMROOT = "${SRCROOT}/../build";
407 | };
408 | name = Debug;
409 | };
410 | F35A912E1CE2014504E45F325880BFD3 /* Release */ = {
411 | isa = XCBuildConfiguration;
412 | baseConfigurationReference = 9BB06C16176EDE8E9F1285500ECE1FB6 /* Pods-DeallocCallback.release.xcconfig */;
413 | buildSettings = {
414 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
415 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
416 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
417 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
418 | ENABLE_STRICT_OBJC_MSGSEND = YES;
419 | GCC_NO_COMMON_BLOCKS = YES;
420 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
421 | MACH_O_TYPE = staticlib;
422 | MTL_ENABLE_DEBUG_INFO = NO;
423 | OTHER_LDFLAGS = "";
424 | OTHER_LIBTOOLFLAGS = "";
425 | PODS_ROOT = "$(SRCROOT)";
426 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
427 | PRODUCT_NAME = "$(TARGET_NAME)";
428 | SDKROOT = iphoneos;
429 | SKIP_INSTALL = YES;
430 | };
431 | name = Release;
432 | };
433 | F6DDF808B7C951A1250F036322A90996 /* Release */ = {
434 | isa = XCBuildConfiguration;
435 | baseConfigurationReference = E61D07733D51012DBACB2C1B2AEB0967 /* MSDeallocCallBack.xcconfig */;
436 | buildSettings = {
437 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
438 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
439 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
440 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
441 | ENABLE_STRICT_OBJC_MSGSEND = YES;
442 | GCC_NO_COMMON_BLOCKS = YES;
443 | GCC_PREFIX_HEADER = "Target Support Files/MSDeallocCallBack/MSDeallocCallBack-prefix.pch";
444 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
445 | MTL_ENABLE_DEBUG_INFO = NO;
446 | OTHER_LDFLAGS = "";
447 | OTHER_LIBTOOLFLAGS = "";
448 | PRIVATE_HEADERS_FOLDER_PATH = "";
449 | PRODUCT_NAME = "$(TARGET_NAME)";
450 | PUBLIC_HEADERS_FOLDER_PATH = "";
451 | SDKROOT = iphoneos;
452 | SKIP_INSTALL = YES;
453 | };
454 | name = Release;
455 | };
456 | /* End XCBuildConfiguration section */
457 |
458 | /* Begin XCConfigurationList section */
459 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = {
460 | isa = XCConfigurationList;
461 | buildConfigurations = (
462 | CF7953F66E785E8876EB4D370D777D50 /* Debug */,
463 | 79B0C2E66EFA9917ED6EDDB8FC6A7684 /* Release */,
464 | );
465 | defaultConfigurationIsVisible = 0;
466 | defaultConfigurationName = Release;
467 | };
468 | BDC4CD55FA420D10379490280A1ED2CE /* Build configuration list for PBXNativeTarget "Pods-DeallocCallback" */ = {
469 | isa = XCConfigurationList;
470 | buildConfigurations = (
471 | 662AB2BD810C7A64B2F07CC5A6C20702 /* Debug */,
472 | F35A912E1CE2014504E45F325880BFD3 /* Release */,
473 | );
474 | defaultConfigurationIsVisible = 0;
475 | defaultConfigurationName = Release;
476 | };
477 | FB4DC1EDF459305C657411DDFD8C572E /* Build configuration list for PBXNativeTarget "MSDeallocCallBack" */ = {
478 | isa = XCConfigurationList;
479 | buildConfigurations = (
480 | A33F873AC3F4CEF09F6BC6F91247F59F /* Debug */,
481 | F6DDF808B7C951A1250F036322A90996 /* Release */,
482 | );
483 | defaultConfigurationIsVisible = 0;
484 | defaultConfigurationName = Release;
485 | };
486 | /* End XCConfigurationList section */
487 | };
488 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
489 | }
490 |
--------------------------------------------------------------------------------
/DEMO/Pods/Target Support Files/MSDeallocCallBack/MSDeallocCallBack-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_MSDeallocCallBack : NSObject
3 | @end
4 | @implementation PodsDummy_MSDeallocCallBack
5 | @end
6 |
--------------------------------------------------------------------------------
/DEMO/Pods/Target Support Files/MSDeallocCallBack/MSDeallocCallBack-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #endif
4 |
5 |
--------------------------------------------------------------------------------
/DEMO/Pods/Target Support Files/MSDeallocCallBack/MSDeallocCallBack.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/MSDeallocCallBack
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MSDeallocCallBack" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MSDeallocCallBack"
4 | PODS_BUILD_DIR = $BUILD_DIR
5 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
8 | SKIP_INSTALL = YES
9 |
--------------------------------------------------------------------------------
/DEMO/Pods/Target Support Files/Pods-DeallocCallback/Pods-DeallocCallback-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 |
4 | ## MSDeallocCallBack
5 |
6 | MIT License
7 |
8 | Copyright (c) 2017
9 |
10 | Permission is hereby granted, free of charge, to any person obtaining a copy
11 | of this software and associated documentation files (the "Software"), to deal
12 | in the Software without restriction, including without limitation the rights
13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14 | copies of the Software, and to permit persons to whom the Software is
15 | furnished to do so, subject to the following conditions:
16 |
17 | The above copyright notice and this permission notice shall be included in all
18 | copies or substantial portions of the Software.
19 |
20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26 | SOFTWARE.
27 |
28 | Generated by CocoaPods - https://cocoapods.org
29 |
--------------------------------------------------------------------------------
/DEMO/Pods/Target Support Files/Pods-DeallocCallback/Pods-DeallocCallback-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 | MIT License
18 |
19 | Copyright (c) 2017
20 |
21 | Permission is hereby granted, free of charge, to any person obtaining a copy
22 | of this software and associated documentation files (the "Software"), to deal
23 | in the Software without restriction, including without limitation the rights
24 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
25 | copies of the Software, and to permit persons to whom the Software is
26 | furnished to do so, subject to the following conditions:
27 |
28 | The above copyright notice and this permission notice shall be included in all
29 | copies or substantial portions of the Software.
30 |
31 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
32 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
33 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
34 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
35 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
36 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
37 | SOFTWARE.
38 |
39 | License
40 | MIT
41 | Title
42 | MSDeallocCallBack
43 | Type
44 | PSGroupSpecifier
45 |
46 |
47 | FooterText
48 | Generated by CocoaPods - https://cocoapods.org
49 | Title
50 |
51 | Type
52 | PSGroupSpecifier
53 |
54 |
55 | StringsTable
56 | Acknowledgements
57 | Title
58 | Acknowledgements
59 |
60 |
61 |
--------------------------------------------------------------------------------
/DEMO/Pods/Target Support Files/Pods-DeallocCallback/Pods-DeallocCallback-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_DeallocCallback : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_DeallocCallback
5 | @end
6 |
--------------------------------------------------------------------------------
/DEMO/Pods/Target Support Files/Pods-DeallocCallback/Pods-DeallocCallback-frameworks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
6 |
7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
8 |
9 | install_framework()
10 | {
11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
12 | local source="${BUILT_PRODUCTS_DIR}/$1"
13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
15 | elif [ -r "$1" ]; then
16 | local source="$1"
17 | fi
18 |
19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
20 |
21 | if [ -L "${source}" ]; then
22 | echo "Symlinked..."
23 | source="$(readlink "${source}")"
24 | fi
25 |
26 | # use filter instead of exclude so missing patterns dont' throw errors
27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
29 |
30 | local basename
31 | basename="$(basename -s .framework "$1")"
32 | binary="${destination}/${basename}.framework/${basename}"
33 | if ! [ -r "$binary" ]; then
34 | binary="${destination}/${basename}"
35 | fi
36 |
37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
39 | strip_invalid_archs "$binary"
40 | fi
41 |
42 | # Resign the code if required by the build settings to avoid unstable apps
43 | code_sign_if_enabled "${destination}/$(basename "$1")"
44 |
45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
47 | local swift_runtime_libs
48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
49 | for lib in $swift_runtime_libs; do
50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
52 | code_sign_if_enabled "${destination}/${lib}"
53 | done
54 | fi
55 | }
56 |
57 | # Signs a framework with the provided identity
58 | code_sign_if_enabled() {
59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
60 | # Use the current code_sign_identitiy
61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
62 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\""
63 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1"
64 | fi
65 | }
66 |
67 | # Strip invalid architectures
68 | strip_invalid_archs() {
69 | binary="$1"
70 | # Get architectures for current file
71 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)"
72 | stripped=""
73 | for arch in $archs; do
74 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then
75 | # Strip non-valid architectures in-place
76 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1
77 | stripped="$stripped $arch"
78 | fi
79 | done
80 | if [[ "$stripped" ]]; then
81 | echo "Stripped $binary of architectures:$stripped"
82 | fi
83 | }
84 |
85 |
--------------------------------------------------------------------------------
/DEMO/Pods/Target Support Files/Pods-DeallocCallback/Pods-DeallocCallback-resources.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
5 |
6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
7 | > "$RESOURCES_TO_COPY"
8 |
9 | XCASSET_FILES=()
10 |
11 | case "${TARGETED_DEVICE_FAMILY}" in
12 | 1,2)
13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
14 | ;;
15 | 1)
16 | TARGET_DEVICE_ARGS="--target-device iphone"
17 | ;;
18 | 2)
19 | TARGET_DEVICE_ARGS="--target-device ipad"
20 | ;;
21 | *)
22 | TARGET_DEVICE_ARGS="--target-device mac"
23 | ;;
24 | esac
25 |
26 | install_resource()
27 | {
28 | if [[ "$1" = /* ]] ; then
29 | RESOURCE_PATH="$1"
30 | else
31 | RESOURCE_PATH="${PODS_ROOT}/$1"
32 | fi
33 | if [[ ! -e "$RESOURCE_PATH" ]] ; then
34 | cat << EOM
35 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
36 | EOM
37 | exit 1
38 | fi
39 | case $RESOURCE_PATH in
40 | *.storyboard)
41 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
42 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
43 | ;;
44 | *.xib)
45 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
46 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
47 | ;;
48 | *.framework)
49 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
50 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
51 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
52 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
53 | ;;
54 | *.xcdatamodel)
55 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\""
56 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
57 | ;;
58 | *.xcdatamodeld)
59 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\""
60 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
61 | ;;
62 | *.xcmappingmodel)
63 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\""
64 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
65 | ;;
66 | *.xcassets)
67 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
68 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
69 | ;;
70 | *)
71 | echo "$RESOURCE_PATH"
72 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
73 | ;;
74 | esac
75 | }
76 |
77 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
78 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
79 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
80 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
81 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
82 | fi
83 | rm -f "$RESOURCES_TO_COPY"
84 |
85 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ]
86 | then
87 | # Find all other xcassets (this unfortunately includes those of path pods and other targets).
88 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
89 | while read line; do
90 | if [[ $line != "${PODS_ROOT}*" ]]; then
91 | XCASSET_FILES+=("$line")
92 | fi
93 | done <<<"$OTHER_XCASSETS"
94 |
95 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
96 | fi
97 |
--------------------------------------------------------------------------------
/DEMO/Pods/Target Support Files/Pods-DeallocCallback/Pods-DeallocCallback.debug.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MSDeallocCallBack"
4 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/MSDeallocCallBack"
5 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MSDeallocCallBack"
6 | OTHER_LDFLAGS = $(inherited) -ObjC -l"MSDeallocCallBack"
7 | PODS_BUILD_DIR = $BUILD_DIR
8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_ROOT = ${SRCROOT}/Pods
10 |
--------------------------------------------------------------------------------
/DEMO/Pods/Target Support Files/Pods-DeallocCallback/Pods-DeallocCallback.release.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MSDeallocCallBack"
4 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/MSDeallocCallBack"
5 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MSDeallocCallBack"
6 | OTHER_LDFLAGS = $(inherited) -ObjC -l"MSDeallocCallBack"
7 | PODS_BUILD_DIR = $BUILD_DIR
8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_ROOT = ${SRCROOT}/Pods
10 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 sureJiang0
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/MSDeallocCallBack.podspec:
--------------------------------------------------------------------------------
1 |
2 | Pod::Spec.new do |s|
3 |
4 | s.name="MSDeallocCallBack"
5 | s.version="1.0.0"
6 | s.summary="MSDeallocCallBack"
7 | s.homepage="https://github.com/sureJiang0/MSDeallocCallback.git"
8 | s.license={:type=>"MIT",:file=>"LICENSE"}
9 | s.author={"jiang.zijia"=>"1140752635@qq.com"}
10 | s.platform=:ios,"5.0"
11 | s.source={:git => "https://github.com/sureJiang0/MSDeallocCallback.git",:tag=> s.version }
12 | s.source_files = "DeallocCallback/NSObject+MSDeallocCallBack.{h,m}"
13 |
14 | s.requires_arc=true
15 |
16 | end
17 |
--------------------------------------------------------------------------------
/MSDeallocCallback/NSObject+MSDeallocCallBack.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+MSDeallocCallBack.h
3 | // DeallocCallback
4 | //
5 | // Created by J on 2017/6/17.
6 | // Copyright © 2017年 J. All rights reserved.
7 | //
8 |
9 | #import
10 | typedef void (^DeallocExecutorBlock)(void);
11 | #define WEAKSELF __weak typeof(self) weakSelf = self;
12 | @interface NSObject (MSDeallocCallBack)
13 |
14 | - (void)deallocCallBack:(DeallocExecutorBlock)block;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/MSDeallocCallback/NSObject+MSDeallocCallBack.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+MSDeallocCallBack.m
3 | // DeallocCallback
4 | //
5 | // Created by J on 2017/6/17.
6 | // Copyright © 2017年 J. All rights reserved.
7 | //
8 |
9 |
10 |
11 | #import "NSObject+MSDeallocCallBack.h"
12 | #import
13 |
14 | const void *kDeallocExecutorsKey = &kDeallocExecutorsKey;
15 | const void *kBlockKey = &kBlockKey;
16 |
17 | @interface CallBackItem : NSObject
18 |
19 | @end
20 | @implementation NSObject (MSDeallocCallBack)
21 |
22 | - (void)deallocCallBack:(DeallocExecutorBlock)block{
23 |
24 |
25 | if (!block) return;
26 |
27 | CallBackItem* obj = [CallBackItem new];
28 | objc_setAssociatedObject(self, kDeallocExecutorsKey, obj, OBJC_ASSOCIATION_RETAIN);
29 |
30 | objc_setAssociatedObject(obj, kBlockKey,block, OBJC_ASSOCIATION_COPY_NONATOMIC);
31 | }
32 |
33 | @end
34 |
35 |
36 |
37 |
38 | @implementation CallBackItem
39 |
40 | - (void)dealloc{
41 |
42 | DeallocExecutorBlock block = objc_getAssociatedObject(self,kBlockKey);
43 | block ? block() : nil;
44 |
45 | }
46 | @end
47 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # UIButton-Blocks
2 |
3 | [](https://www.apple.com/nl/ios/)
4 | [](https://github.com/JZJJZJ/MSDeallocCallback/blob/master/LICENSE)
5 | [](http://cocoapods.org/?q=MSDeallocCallback)
6 |
7 |
8 | ## Features
9 |
10 | - block syntax
11 |
12 | ## Installation
13 |
14 | ### Cocoapods(Recommended)
15 |
16 | 1. Add `pod 'MSDeallocCallBack'` to your Podfile.
17 | 2. Run `pod install`
18 |
19 | ### Manual
20 |
21 | 1. Add all files under `MSDeallocCallback` to your project
22 |
23 | ## Requirements
24 |
25 | - iOS 5.0 and greater
26 | - ARC
27 |
28 |
29 | ## How To Use
30 |
31 | ```objc
32 |
33 | Objective-C:
34 |
35 | #import "NSObject+MSDeallocCallBack.h"
36 |
37 | @property(nonatomic,assign)SecondViewController* sc;
38 |
39 | WEAKSELF
40 | [self.sc deallocCallBack:^{
41 | weakSelf.sc = nil;
42 | NSLog(@"xxxx%@",weakSelf.sc);
43 |
44 | }];
45 | ```
46 | ## License
47 |
48 | MSDeallocCallback is available under the MIT license. See the LICENSE file for more info.
49 |
--------------------------------------------------------------------------------