jikaipeng vor 4 Jahren
Commit
17dfdb4164

+ 584 - 0
MMProject.xcodeproj/project.pbxproj

@@ -0,0 +1,584 @@
1
+// !$*UTF8*$!
2
+{
3
+	archiveVersion = 1;
4
+	classes = {
5
+	};
6
+	objectVersion = 50;
7
+	objects = {
8
+
9
+/* Begin PBXBuildFile section */
10
+		768EE07123865FC800591F71 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 768EE07023865FC800591F71 /* AppDelegate.m */; };
11
+		768EE07423865FC800591F71 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 768EE07323865FC800591F71 /* SceneDelegate.m */; };
12
+		768EE07723865FC800591F71 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 768EE07623865FC800591F71 /* ViewController.m */; };
13
+		768EE07A23865FC800591F71 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 768EE07823865FC800591F71 /* Main.storyboard */; };
14
+		768EE07C23865FD100591F71 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 768EE07B23865FD100591F71 /* Assets.xcassets */; };
15
+		768EE07F23865FD100591F71 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 768EE07D23865FD100591F71 /* LaunchScreen.storyboard */; };
16
+		768EE08223865FD100591F71 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 768EE08123865FD100591F71 /* main.m */; };
17
+		768EE08C23865FD100591F71 /* MMProjectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 768EE08B23865FD100591F71 /* MMProjectTests.m */; };
18
+		768EE09723865FD100591F71 /* MMProjectUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 768EE09623865FD100591F71 /* MMProjectUITests.m */; };
19
+/* End PBXBuildFile section */
20
+
21
+/* Begin PBXContainerItemProxy section */
22
+		768EE08823865FD100591F71 /* PBXContainerItemProxy */ = {
23
+			isa = PBXContainerItemProxy;
24
+			containerPortal = 768EE06423865FC800591F71 /* Project object */;
25
+			proxyType = 1;
26
+			remoteGlobalIDString = 768EE06B23865FC800591F71;
27
+			remoteInfo = MMProject;
28
+		};
29
+		768EE09323865FD100591F71 /* PBXContainerItemProxy */ = {
30
+			isa = PBXContainerItemProxy;
31
+			containerPortal = 768EE06423865FC800591F71 /* Project object */;
32
+			proxyType = 1;
33
+			remoteGlobalIDString = 768EE06B23865FC800591F71;
34
+			remoteInfo = MMProject;
35
+		};
36
+/* End PBXContainerItemProxy section */
37
+
38
+/* Begin PBXFileReference section */
39
+		768EE06C23865FC800591F71 /* MMProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MMProject.app; sourceTree = BUILT_PRODUCTS_DIR; };
40
+		768EE06F23865FC800591F71 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
41
+		768EE07023865FC800591F71 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
42
+		768EE07223865FC800591F71 /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = "<group>"; };
43
+		768EE07323865FC800591F71 /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = "<group>"; };
44
+		768EE07523865FC800591F71 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
45
+		768EE07623865FC800591F71 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
46
+		768EE07923865FC800591F71 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
47
+		768EE07B23865FD100591F71 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
48
+		768EE07E23865FD100591F71 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
49
+		768EE08023865FD100591F71 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
50
+		768EE08123865FD100591F71 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
51
+		768EE08723865FD100591F71 /* MMProjectTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MMProjectTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
52
+		768EE08B23865FD100591F71 /* MMProjectTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MMProjectTests.m; sourceTree = "<group>"; };
53
+		768EE08D23865FD100591F71 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
54
+		768EE09223865FD100591F71 /* MMProjectUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MMProjectUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
55
+		768EE09623865FD100591F71 /* MMProjectUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MMProjectUITests.m; sourceTree = "<group>"; };
56
+		768EE09823865FD100591F71 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
57
+/* End PBXFileReference section */
58
+
59
+/* Begin PBXFrameworksBuildPhase section */
60
+		768EE06923865FC800591F71 /* Frameworks */ = {
61
+			isa = PBXFrameworksBuildPhase;
62
+			buildActionMask = 2147483647;
63
+			files = (
64
+			);
65
+			runOnlyForDeploymentPostprocessing = 0;
66
+		};
67
+		768EE08423865FD100591F71 /* Frameworks */ = {
68
+			isa = PBXFrameworksBuildPhase;
69
+			buildActionMask = 2147483647;
70
+			files = (
71
+			);
72
+			runOnlyForDeploymentPostprocessing = 0;
73
+		};
74
+		768EE08F23865FD100591F71 /* Frameworks */ = {
75
+			isa = PBXFrameworksBuildPhase;
76
+			buildActionMask = 2147483647;
77
+			files = (
78
+			);
79
+			runOnlyForDeploymentPostprocessing = 0;
80
+		};
81
+/* End PBXFrameworksBuildPhase section */
82
+
83
+/* Begin PBXGroup section */
84
+		768EE06323865FC800591F71 = {
85
+			isa = PBXGroup;
86
+			children = (
87
+				768EE06E23865FC800591F71 /* MMProject */,
88
+				768EE08A23865FD100591F71 /* MMProjectTests */,
89
+				768EE09523865FD100591F71 /* MMProjectUITests */,
90
+				768EE06D23865FC800591F71 /* Products */,
91
+			);
92
+			sourceTree = "<group>";
93
+		};
94
+		768EE06D23865FC800591F71 /* Products */ = {
95
+			isa = PBXGroup;
96
+			children = (
97
+				768EE06C23865FC800591F71 /* MMProject.app */,
98
+				768EE08723865FD100591F71 /* MMProjectTests.xctest */,
99
+				768EE09223865FD100591F71 /* MMProjectUITests.xctest */,
100
+			);
101
+			name = Products;
102
+			sourceTree = "<group>";
103
+		};
104
+		768EE06E23865FC800591F71 /* MMProject */ = {
105
+			isa = PBXGroup;
106
+			children = (
107
+				768EE06F23865FC800591F71 /* AppDelegate.h */,
108
+				768EE07023865FC800591F71 /* AppDelegate.m */,
109
+				768EE07223865FC800591F71 /* SceneDelegate.h */,
110
+				768EE07323865FC800591F71 /* SceneDelegate.m */,
111
+				768EE07523865FC800591F71 /* ViewController.h */,
112
+				768EE07623865FC800591F71 /* ViewController.m */,
113
+				768EE07823865FC800591F71 /* Main.storyboard */,
114
+				768EE07B23865FD100591F71 /* Assets.xcassets */,
115
+				768EE07D23865FD100591F71 /* LaunchScreen.storyboard */,
116
+				768EE08023865FD100591F71 /* Info.plist */,
117
+				768EE08123865FD100591F71 /* main.m */,
118
+			);
119
+			path = MMProject;
120
+			sourceTree = "<group>";
121
+		};
122
+		768EE08A23865FD100591F71 /* MMProjectTests */ = {
123
+			isa = PBXGroup;
124
+			children = (
125
+				768EE08B23865FD100591F71 /* MMProjectTests.m */,
126
+				768EE08D23865FD100591F71 /* Info.plist */,
127
+			);
128
+			path = MMProjectTests;
129
+			sourceTree = "<group>";
130
+		};
131
+		768EE09523865FD100591F71 /* MMProjectUITests */ = {
132
+			isa = PBXGroup;
133
+			children = (
134
+				768EE09623865FD100591F71 /* MMProjectUITests.m */,
135
+				768EE09823865FD100591F71 /* Info.plist */,
136
+			);
137
+			path = MMProjectUITests;
138
+			sourceTree = "<group>";
139
+		};
140
+/* End PBXGroup section */
141
+
142
+/* Begin PBXNativeTarget section */
143
+		768EE06B23865FC800591F71 /* MMProject */ = {
144
+			isa = PBXNativeTarget;
145
+			buildConfigurationList = 768EE09B23865FD100591F71 /* Build configuration list for PBXNativeTarget "MMProject" */;
146
+			buildPhases = (
147
+				768EE06823865FC800591F71 /* Sources */,
148
+				768EE06923865FC800591F71 /* Frameworks */,
149
+				768EE06A23865FC800591F71 /* Resources */,
150
+			);
151
+			buildRules = (
152
+			);
153
+			dependencies = (
154
+			);
155
+			name = MMProject;
156
+			productName = MMProject;
157
+			productReference = 768EE06C23865FC800591F71 /* MMProject.app */;
158
+			productType = "com.apple.product-type.application";
159
+		};
160
+		768EE08623865FD100591F71 /* MMProjectTests */ = {
161
+			isa = PBXNativeTarget;
162
+			buildConfigurationList = 768EE09E23865FD100591F71 /* Build configuration list for PBXNativeTarget "MMProjectTests" */;
163
+			buildPhases = (
164
+				768EE08323865FD100591F71 /* Sources */,
165
+				768EE08423865FD100591F71 /* Frameworks */,
166
+				768EE08523865FD100591F71 /* Resources */,
167
+			);
168
+			buildRules = (
169
+			);
170
+			dependencies = (
171
+				768EE08923865FD100591F71 /* PBXTargetDependency */,
172
+			);
173
+			name = MMProjectTests;
174
+			productName = MMProjectTests;
175
+			productReference = 768EE08723865FD100591F71 /* MMProjectTests.xctest */;
176
+			productType = "com.apple.product-type.bundle.unit-test";
177
+		};
178
+		768EE09123865FD100591F71 /* MMProjectUITests */ = {
179
+			isa = PBXNativeTarget;
180
+			buildConfigurationList = 768EE0A123865FD100591F71 /* Build configuration list for PBXNativeTarget "MMProjectUITests" */;
181
+			buildPhases = (
182
+				768EE08E23865FD100591F71 /* Sources */,
183
+				768EE08F23865FD100591F71 /* Frameworks */,
184
+				768EE09023865FD100591F71 /* Resources */,
185
+			);
186
+			buildRules = (
187
+			);
188
+			dependencies = (
189
+				768EE09423865FD100591F71 /* PBXTargetDependency */,
190
+			);
191
+			name = MMProjectUITests;
192
+			productName = MMProjectUITests;
193
+			productReference = 768EE09223865FD100591F71 /* MMProjectUITests.xctest */;
194
+			productType = "com.apple.product-type.bundle.ui-testing";
195
+		};
196
+/* End PBXNativeTarget section */
197
+
198
+/* Begin PBXProject section */
199
+		768EE06423865FC800591F71 /* Project object */ = {
200
+			isa = PBXProject;
201
+			attributes = {
202
+				LastUpgradeCheck = 1110;
203
+				ORGANIZATIONNAME = kuxuan;
204
+				TargetAttributes = {
205
+					768EE06B23865FC800591F71 = {
206
+						CreatedOnToolsVersion = 11.1;
207
+					};
208
+					768EE08623865FD100591F71 = {
209
+						CreatedOnToolsVersion = 11.1;
210
+						TestTargetID = 768EE06B23865FC800591F71;
211
+					};
212
+					768EE09123865FD100591F71 = {
213
+						CreatedOnToolsVersion = 11.1;
214
+						TestTargetID = 768EE06B23865FC800591F71;
215
+					};
216
+				};
217
+			};
218
+			buildConfigurationList = 768EE06723865FC800591F71 /* Build configuration list for PBXProject "MMProject" */;
219
+			compatibilityVersion = "Xcode 9.3";
220
+			developmentRegion = en;
221
+			hasScannedForEncodings = 0;
222
+			knownRegions = (
223
+				en,
224
+				Base,
225
+			);
226
+			mainGroup = 768EE06323865FC800591F71;
227
+			productRefGroup = 768EE06D23865FC800591F71 /* Products */;
228
+			projectDirPath = "";
229
+			projectRoot = "";
230
+			targets = (
231
+				768EE06B23865FC800591F71 /* MMProject */,
232
+				768EE08623865FD100591F71 /* MMProjectTests */,
233
+				768EE09123865FD100591F71 /* MMProjectUITests */,
234
+			);
235
+		};
236
+/* End PBXProject section */
237
+
238
+/* Begin PBXResourcesBuildPhase section */
239
+		768EE06A23865FC800591F71 /* Resources */ = {
240
+			isa = PBXResourcesBuildPhase;
241
+			buildActionMask = 2147483647;
242
+			files = (
243
+				768EE07F23865FD100591F71 /* LaunchScreen.storyboard in Resources */,
244
+				768EE07C23865FD100591F71 /* Assets.xcassets in Resources */,
245
+				768EE07A23865FC800591F71 /* Main.storyboard in Resources */,
246
+			);
247
+			runOnlyForDeploymentPostprocessing = 0;
248
+		};
249
+		768EE08523865FD100591F71 /* Resources */ = {
250
+			isa = PBXResourcesBuildPhase;
251
+			buildActionMask = 2147483647;
252
+			files = (
253
+			);
254
+			runOnlyForDeploymentPostprocessing = 0;
255
+		};
256
+		768EE09023865FD100591F71 /* Resources */ = {
257
+			isa = PBXResourcesBuildPhase;
258
+			buildActionMask = 2147483647;
259
+			files = (
260
+			);
261
+			runOnlyForDeploymentPostprocessing = 0;
262
+		};
263
+/* End PBXResourcesBuildPhase section */
264
+
265
+/* Begin PBXSourcesBuildPhase section */
266
+		768EE06823865FC800591F71 /* Sources */ = {
267
+			isa = PBXSourcesBuildPhase;
268
+			buildActionMask = 2147483647;
269
+			files = (
270
+				768EE07723865FC800591F71 /* ViewController.m in Sources */,
271
+				768EE07123865FC800591F71 /* AppDelegate.m in Sources */,
272
+				768EE08223865FD100591F71 /* main.m in Sources */,
273
+				768EE07423865FC800591F71 /* SceneDelegate.m in Sources */,
274
+			);
275
+			runOnlyForDeploymentPostprocessing = 0;
276
+		};
277
+		768EE08323865FD100591F71 /* Sources */ = {
278
+			isa = PBXSourcesBuildPhase;
279
+			buildActionMask = 2147483647;
280
+			files = (
281
+				768EE08C23865FD100591F71 /* MMProjectTests.m in Sources */,
282
+			);
283
+			runOnlyForDeploymentPostprocessing = 0;
284
+		};
285
+		768EE08E23865FD100591F71 /* Sources */ = {
286
+			isa = PBXSourcesBuildPhase;
287
+			buildActionMask = 2147483647;
288
+			files = (
289
+				768EE09723865FD100591F71 /* MMProjectUITests.m in Sources */,
290
+			);
291
+			runOnlyForDeploymentPostprocessing = 0;
292
+		};
293
+/* End PBXSourcesBuildPhase section */
294
+
295
+/* Begin PBXTargetDependency section */
296
+		768EE08923865FD100591F71 /* PBXTargetDependency */ = {
297
+			isa = PBXTargetDependency;
298
+			target = 768EE06B23865FC800591F71 /* MMProject */;
299
+			targetProxy = 768EE08823865FD100591F71 /* PBXContainerItemProxy */;
300
+		};
301
+		768EE09423865FD100591F71 /* PBXTargetDependency */ = {
302
+			isa = PBXTargetDependency;
303
+			target = 768EE06B23865FC800591F71 /* MMProject */;
304
+			targetProxy = 768EE09323865FD100591F71 /* PBXContainerItemProxy */;
305
+		};
306
+/* End PBXTargetDependency section */
307
+
308
+/* Begin PBXVariantGroup section */
309
+		768EE07823865FC800591F71 /* Main.storyboard */ = {
310
+			isa = PBXVariantGroup;
311
+			children = (
312
+				768EE07923865FC800591F71 /* Base */,
313
+			);
314
+			name = Main.storyboard;
315
+			sourceTree = "<group>";
316
+		};
317
+		768EE07D23865FD100591F71 /* LaunchScreen.storyboard */ = {
318
+			isa = PBXVariantGroup;
319
+			children = (
320
+				768EE07E23865FD100591F71 /* Base */,
321
+			);
322
+			name = LaunchScreen.storyboard;
323
+			sourceTree = "<group>";
324
+		};
325
+/* End PBXVariantGroup section */
326
+
327
+/* Begin XCBuildConfiguration section */
328
+		768EE09923865FD100591F71 /* Debug */ = {
329
+			isa = XCBuildConfiguration;
330
+			buildSettings = {
331
+				ALWAYS_SEARCH_USER_PATHS = NO;
332
+				CLANG_ANALYZER_NONNULL = YES;
333
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
334
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
335
+				CLANG_CXX_LIBRARY = "libc++";
336
+				CLANG_ENABLE_MODULES = YES;
337
+				CLANG_ENABLE_OBJC_ARC = YES;
338
+				CLANG_ENABLE_OBJC_WEAK = YES;
339
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
340
+				CLANG_WARN_BOOL_CONVERSION = YES;
341
+				CLANG_WARN_COMMA = YES;
342
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
343
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
344
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
345
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
346
+				CLANG_WARN_EMPTY_BODY = YES;
347
+				CLANG_WARN_ENUM_CONVERSION = YES;
348
+				CLANG_WARN_INFINITE_RECURSION = YES;
349
+				CLANG_WARN_INT_CONVERSION = YES;
350
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
351
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
352
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
353
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
354
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
355
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
356
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
357
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
358
+				CLANG_WARN_UNREACHABLE_CODE = YES;
359
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
360
+				COPY_PHASE_STRIP = NO;
361
+				DEBUG_INFORMATION_FORMAT = dwarf;
362
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
363
+				ENABLE_TESTABILITY = YES;
364
+				GCC_C_LANGUAGE_STANDARD = gnu11;
365
+				GCC_DYNAMIC_NO_PIC = NO;
366
+				GCC_NO_COMMON_BLOCKS = YES;
367
+				GCC_OPTIMIZATION_LEVEL = 0;
368
+				GCC_PREPROCESSOR_DEFINITIONS = (
369
+					"DEBUG=1",
370
+					"$(inherited)",
371
+				);
372
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
373
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
374
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
375
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
376
+				GCC_WARN_UNUSED_FUNCTION = YES;
377
+				GCC_WARN_UNUSED_VARIABLE = YES;
378
+				IPHONEOS_DEPLOYMENT_TARGET = 13.1;
379
+				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
380
+				MTL_FAST_MATH = YES;
381
+				ONLY_ACTIVE_ARCH = YES;
382
+				SDKROOT = iphoneos;
383
+			};
384
+			name = Debug;
385
+		};
386
+		768EE09A23865FD100591F71 /* Release */ = {
387
+			isa = XCBuildConfiguration;
388
+			buildSettings = {
389
+				ALWAYS_SEARCH_USER_PATHS = NO;
390
+				CLANG_ANALYZER_NONNULL = YES;
391
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
392
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
393
+				CLANG_CXX_LIBRARY = "libc++";
394
+				CLANG_ENABLE_MODULES = YES;
395
+				CLANG_ENABLE_OBJC_ARC = YES;
396
+				CLANG_ENABLE_OBJC_WEAK = YES;
397
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
398
+				CLANG_WARN_BOOL_CONVERSION = YES;
399
+				CLANG_WARN_COMMA = YES;
400
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
401
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
402
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
403
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
404
+				CLANG_WARN_EMPTY_BODY = YES;
405
+				CLANG_WARN_ENUM_CONVERSION = YES;
406
+				CLANG_WARN_INFINITE_RECURSION = YES;
407
+				CLANG_WARN_INT_CONVERSION = YES;
408
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
409
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
410
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
411
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
412
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
413
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
414
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
415
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
416
+				CLANG_WARN_UNREACHABLE_CODE = YES;
417
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
418
+				COPY_PHASE_STRIP = NO;
419
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
420
+				ENABLE_NS_ASSERTIONS = NO;
421
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
422
+				GCC_C_LANGUAGE_STANDARD = gnu11;
423
+				GCC_NO_COMMON_BLOCKS = YES;
424
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
425
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
426
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
427
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
428
+				GCC_WARN_UNUSED_FUNCTION = YES;
429
+				GCC_WARN_UNUSED_VARIABLE = YES;
430
+				IPHONEOS_DEPLOYMENT_TARGET = 13.1;
431
+				MTL_ENABLE_DEBUG_INFO = NO;
432
+				MTL_FAST_MATH = YES;
433
+				SDKROOT = iphoneos;
434
+				VALIDATE_PRODUCT = YES;
435
+			};
436
+			name = Release;
437
+		};
438
+		768EE09C23865FD100591F71 /* Debug */ = {
439
+			isa = XCBuildConfiguration;
440
+			buildSettings = {
441
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
442
+				CODE_SIGN_STYLE = Automatic;
443
+				INFOPLIST_FILE = MMProject/Info.plist;
444
+				LD_RUNPATH_SEARCH_PATHS = (
445
+					"$(inherited)",
446
+					"@executable_path/Frameworks",
447
+				);
448
+				PRODUCT_BUNDLE_IDENTIFIER = com.kuuxan..MMProject;
449
+				PRODUCT_NAME = "$(TARGET_NAME)";
450
+				TARGETED_DEVICE_FAMILY = "1,2";
451
+			};
452
+			name = Debug;
453
+		};
454
+		768EE09D23865FD100591F71 /* Release */ = {
455
+			isa = XCBuildConfiguration;
456
+			buildSettings = {
457
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
458
+				CODE_SIGN_STYLE = Automatic;
459
+				INFOPLIST_FILE = MMProject/Info.plist;
460
+				LD_RUNPATH_SEARCH_PATHS = (
461
+					"$(inherited)",
462
+					"@executable_path/Frameworks",
463
+				);
464
+				PRODUCT_BUNDLE_IDENTIFIER = com.kuuxan..MMProject;
465
+				PRODUCT_NAME = "$(TARGET_NAME)";
466
+				TARGETED_DEVICE_FAMILY = "1,2";
467
+			};
468
+			name = Release;
469
+		};
470
+		768EE09F23865FD100591F71 /* Debug */ = {
471
+			isa = XCBuildConfiguration;
472
+			buildSettings = {
473
+				BUNDLE_LOADER = "$(TEST_HOST)";
474
+				CODE_SIGN_STYLE = Automatic;
475
+				INFOPLIST_FILE = MMProjectTests/Info.plist;
476
+				IPHONEOS_DEPLOYMENT_TARGET = 13.1;
477
+				LD_RUNPATH_SEARCH_PATHS = (
478
+					"$(inherited)",
479
+					"@executable_path/Frameworks",
480
+					"@loader_path/Frameworks",
481
+				);
482
+				PRODUCT_BUNDLE_IDENTIFIER = com.kuuxan..MMProjectTests;
483
+				PRODUCT_NAME = "$(TARGET_NAME)";
484
+				TARGETED_DEVICE_FAMILY = "1,2";
485
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MMProject.app/MMProject";
486
+			};
487
+			name = Debug;
488
+		};
489
+		768EE0A023865FD100591F71 /* Release */ = {
490
+			isa = XCBuildConfiguration;
491
+			buildSettings = {
492
+				BUNDLE_LOADER = "$(TEST_HOST)";
493
+				CODE_SIGN_STYLE = Automatic;
494
+				INFOPLIST_FILE = MMProjectTests/Info.plist;
495
+				IPHONEOS_DEPLOYMENT_TARGET = 13.1;
496
+				LD_RUNPATH_SEARCH_PATHS = (
497
+					"$(inherited)",
498
+					"@executable_path/Frameworks",
499
+					"@loader_path/Frameworks",
500
+				);
501
+				PRODUCT_BUNDLE_IDENTIFIER = com.kuuxan..MMProjectTests;
502
+				PRODUCT_NAME = "$(TARGET_NAME)";
503
+				TARGETED_DEVICE_FAMILY = "1,2";
504
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MMProject.app/MMProject";
505
+			};
506
+			name = Release;
507
+		};
508
+		768EE0A223865FD100591F71 /* Debug */ = {
509
+			isa = XCBuildConfiguration;
510
+			buildSettings = {
511
+				CODE_SIGN_STYLE = Automatic;
512
+				INFOPLIST_FILE = MMProjectUITests/Info.plist;
513
+				LD_RUNPATH_SEARCH_PATHS = (
514
+					"$(inherited)",
515
+					"@executable_path/Frameworks",
516
+					"@loader_path/Frameworks",
517
+				);
518
+				PRODUCT_BUNDLE_IDENTIFIER = com.kuuxan..MMProjectUITests;
519
+				PRODUCT_NAME = "$(TARGET_NAME)";
520
+				TARGETED_DEVICE_FAMILY = "1,2";
521
+				TEST_TARGET_NAME = MMProject;
522
+			};
523
+			name = Debug;
524
+		};
525
+		768EE0A323865FD100591F71 /* Release */ = {
526
+			isa = XCBuildConfiguration;
527
+			buildSettings = {
528
+				CODE_SIGN_STYLE = Automatic;
529
+				INFOPLIST_FILE = MMProjectUITests/Info.plist;
530
+				LD_RUNPATH_SEARCH_PATHS = (
531
+					"$(inherited)",
532
+					"@executable_path/Frameworks",
533
+					"@loader_path/Frameworks",
534
+				);
535
+				PRODUCT_BUNDLE_IDENTIFIER = com.kuuxan..MMProjectUITests;
536
+				PRODUCT_NAME = "$(TARGET_NAME)";
537
+				TARGETED_DEVICE_FAMILY = "1,2";
538
+				TEST_TARGET_NAME = MMProject;
539
+			};
540
+			name = Release;
541
+		};
542
+/* End XCBuildConfiguration section */
543
+
544
+/* Begin XCConfigurationList section */
545
+		768EE06723865FC800591F71 /* Build configuration list for PBXProject "MMProject" */ = {
546
+			isa = XCConfigurationList;
547
+			buildConfigurations = (
548
+				768EE09923865FD100591F71 /* Debug */,
549
+				768EE09A23865FD100591F71 /* Release */,
550
+			);
551
+			defaultConfigurationIsVisible = 0;
552
+			defaultConfigurationName = Release;
553
+		};
554
+		768EE09B23865FD100591F71 /* Build configuration list for PBXNativeTarget "MMProject" */ = {
555
+			isa = XCConfigurationList;
556
+			buildConfigurations = (
557
+				768EE09C23865FD100591F71 /* Debug */,
558
+				768EE09D23865FD100591F71 /* Release */,
559
+			);
560
+			defaultConfigurationIsVisible = 0;
561
+			defaultConfigurationName = Release;
562
+		};
563
+		768EE09E23865FD100591F71 /* Build configuration list for PBXNativeTarget "MMProjectTests" */ = {
564
+			isa = XCConfigurationList;
565
+			buildConfigurations = (
566
+				768EE09F23865FD100591F71 /* Debug */,
567
+				768EE0A023865FD100591F71 /* Release */,
568
+			);
569
+			defaultConfigurationIsVisible = 0;
570
+			defaultConfigurationName = Release;
571
+		};
572
+		768EE0A123865FD100591F71 /* Build configuration list for PBXNativeTarget "MMProjectUITests" */ = {
573
+			isa = XCConfigurationList;
574
+			buildConfigurations = (
575
+				768EE0A223865FD100591F71 /* Debug */,
576
+				768EE0A323865FD100591F71 /* Release */,
577
+			);
578
+			defaultConfigurationIsVisible = 0;
579
+			defaultConfigurationName = Release;
580
+		};
581
+/* End XCConfigurationList section */
582
+	};
583
+	rootObject = 768EE06423865FC800591F71 /* Project object */;
584
+}

+ 7 - 0
MMProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -0,0 +1,7 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Workspace
3
+   version = "1.0">
4
+   <FileRef
5
+      location = "self:MMProject.xcodeproj">
6
+   </FileRef>
7
+</Workspace>

+ 8 - 0
MMProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist

@@ -0,0 +1,8 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>IDEDidComputeMac32BitWarning</key>
6
+	<true/>
7
+</dict>
8
+</plist>

+ 14 - 0
MMProject.xcodeproj/xcuserdata/kaipeng.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -0,0 +1,14 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>SchemeUserState</key>
6
+	<dict>
7
+		<key>MMProject.xcscheme_^#shared#^_</key>
8
+		<dict>
9
+			<key>orderHint</key>
10
+			<integer>0</integer>
11
+		</dict>
12
+	</dict>
13
+</dict>
14
+</plist>

+ 15 - 0
MMProject/AppDelegate.h

@@ -0,0 +1,15 @@
1
+//
2
+//  AppDelegate.h
3
+//  MMProject
4
+//
5
+//  Created by admin on 2019/11/21.
6
+//  Copyright © 2019 kuxuan. All rights reserved.
7
+//
8
+
9
+#import <UIKit/UIKit.h>
10
+
11
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
12
+
13
+
14
+@end
15
+

+ 41 - 0
MMProject/AppDelegate.m

@@ -0,0 +1,41 @@
1
+//
2
+//  AppDelegate.m
3
+//  MMProject
4
+//
5
+//  Created by admin on 2019/11/21.
6
+//  Copyright © 2019 kuxuan. All rights reserved.
7
+//
8
+
9
+#import "AppDelegate.h"
10
+
11
+@interface AppDelegate ()
12
+
13
+@end
14
+
15
+@implementation AppDelegate
16
+
17
+
18
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19
+    // Override point for customization after application launch.
20
+    return YES;
21
+}
22
+
23
+
24
+#pragma mark - UISceneSession lifecycle
25
+
26
+
27
+- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
28
+    // Called when a new scene session is being created.
29
+    // Use this method to select a configuration to create the new scene with.
30
+    return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
31
+}
32
+
33
+
34
+- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions {
35
+    // Called when the user discards a scene session.
36
+    // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
37
+    // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
38
+}
39
+
40
+
41
+@end

+ 98 - 0
MMProject/Assets.xcassets/AppIcon.appiconset/Contents.json

@@ -0,0 +1,98 @@
1
+{
2
+  "images" : [
3
+    {
4
+      "idiom" : "iphone",
5
+      "size" : "20x20",
6
+      "scale" : "2x"
7
+    },
8
+    {
9
+      "idiom" : "iphone",
10
+      "size" : "20x20",
11
+      "scale" : "3x"
12
+    },
13
+    {
14
+      "idiom" : "iphone",
15
+      "size" : "29x29",
16
+      "scale" : "2x"
17
+    },
18
+    {
19
+      "idiom" : "iphone",
20
+      "size" : "29x29",
21
+      "scale" : "3x"
22
+    },
23
+    {
24
+      "idiom" : "iphone",
25
+      "size" : "40x40",
26
+      "scale" : "2x"
27
+    },
28
+    {
29
+      "idiom" : "iphone",
30
+      "size" : "40x40",
31
+      "scale" : "3x"
32
+    },
33
+    {
34
+      "idiom" : "iphone",
35
+      "size" : "60x60",
36
+      "scale" : "2x"
37
+    },
38
+    {
39
+      "idiom" : "iphone",
40
+      "size" : "60x60",
41
+      "scale" : "3x"
42
+    },
43
+    {
44
+      "idiom" : "ipad",
45
+      "size" : "20x20",
46
+      "scale" : "1x"
47
+    },
48
+    {
49
+      "idiom" : "ipad",
50
+      "size" : "20x20",
51
+      "scale" : "2x"
52
+    },
53
+    {
54
+      "idiom" : "ipad",
55
+      "size" : "29x29",
56
+      "scale" : "1x"
57
+    },
58
+    {
59
+      "idiom" : "ipad",
60
+      "size" : "29x29",
61
+      "scale" : "2x"
62
+    },
63
+    {
64
+      "idiom" : "ipad",
65
+      "size" : "40x40",
66
+      "scale" : "1x"
67
+    },
68
+    {
69
+      "idiom" : "ipad",
70
+      "size" : "40x40",
71
+      "scale" : "2x"
72
+    },
73
+    {
74
+      "idiom" : "ipad",
75
+      "size" : "76x76",
76
+      "scale" : "1x"
77
+    },
78
+    {
79
+      "idiom" : "ipad",
80
+      "size" : "76x76",
81
+      "scale" : "2x"
82
+    },
83
+    {
84
+      "idiom" : "ipad",
85
+      "size" : "83.5x83.5",
86
+      "scale" : "2x"
87
+    },
88
+    {
89
+      "idiom" : "ios-marketing",
90
+      "size" : "1024x1024",
91
+      "scale" : "1x"
92
+    }
93
+  ],
94
+  "info" : {
95
+    "version" : 1,
96
+    "author" : "xcode"
97
+  }
98
+}

+ 6 - 0
MMProject/Assets.xcassets/Contents.json

@@ -0,0 +1,6 @@
1
+{
2
+  "info" : {
3
+    "version" : 1,
4
+    "author" : "xcode"
5
+  }
6
+}

+ 25 - 0
MMProject/Base.lproj/LaunchScreen.storyboard

@@ -0,0 +1,25 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
3
+    <dependencies>
4
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
5
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
6
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
7
+    </dependencies>
8
+    <scenes>
9
+        <!--View Controller-->
10
+        <scene sceneID="EHf-IW-A2E">
11
+            <objects>
12
+                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
13
+                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
14
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
15
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
16
+                        <color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
17
+                        <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
18
+                    </view>
19
+                </viewController>
20
+                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
21
+            </objects>
22
+            <point key="canvasLocation" x="53" y="375"/>
23
+        </scene>
24
+    </scenes>
25
+</document>

+ 24 - 0
MMProject/Base.lproj/Main.storyboard

@@ -0,0 +1,24 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
3
+    <dependencies>
4
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
5
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
6
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
7
+    </dependencies>
8
+    <scenes>
9
+        <!--View Controller-->
10
+        <scene sceneID="tne-QT-ifu">
11
+            <objects>
12
+                <viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController">
13
+                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
14
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
15
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
16
+                        <color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
17
+                        <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
18
+                    </view>
19
+                </viewController>
20
+                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
21
+            </objects>
22
+        </scene>
23
+    </scenes>
24
+</document>

+ 64 - 0
MMProject/Info.plist

@@ -0,0 +1,64 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>CFBundleDevelopmentRegion</key>
6
+	<string>$(DEVELOPMENT_LANGUAGE)</string>
7
+	<key>CFBundleExecutable</key>
8
+	<string>$(EXECUTABLE_NAME)</string>
9
+	<key>CFBundleIdentifier</key>
10
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11
+	<key>CFBundleInfoDictionaryVersion</key>
12
+	<string>6.0</string>
13
+	<key>CFBundleName</key>
14
+	<string>$(PRODUCT_NAME)</string>
15
+	<key>CFBundlePackageType</key>
16
+	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
17
+	<key>CFBundleShortVersionString</key>
18
+	<string>1.0</string>
19
+	<key>CFBundleVersion</key>
20
+	<string>1</string>
21
+	<key>LSRequiresIPhoneOS</key>
22
+	<true/>
23
+	<key>UIApplicationSceneManifest</key>
24
+	<dict>
25
+		<key>UIApplicationSupportsMultipleScenes</key>
26
+		<false/>
27
+		<key>UISceneConfigurations</key>
28
+		<dict>
29
+			<key>UIWindowSceneSessionRoleApplication</key>
30
+			<array>
31
+				<dict>
32
+					<key>UISceneConfigurationName</key>
33
+					<string>Default Configuration</string>
34
+					<key>UISceneDelegateClassName</key>
35
+					<string>SceneDelegate</string>
36
+					<key>UISceneStoryboardFile</key>
37
+					<string>Main</string>
38
+				</dict>
39
+			</array>
40
+		</dict>
41
+	</dict>
42
+	<key>UILaunchStoryboardName</key>
43
+	<string>LaunchScreen</string>
44
+	<key>UIMainStoryboardFile</key>
45
+	<string>Main</string>
46
+	<key>UIRequiredDeviceCapabilities</key>
47
+	<array>
48
+		<string>armv7</string>
49
+	</array>
50
+	<key>UISupportedInterfaceOrientations</key>
51
+	<array>
52
+		<string>UIInterfaceOrientationPortrait</string>
53
+		<string>UIInterfaceOrientationLandscapeLeft</string>
54
+		<string>UIInterfaceOrientationLandscapeRight</string>
55
+	</array>
56
+	<key>UISupportedInterfaceOrientations~ipad</key>
57
+	<array>
58
+		<string>UIInterfaceOrientationPortrait</string>
59
+		<string>UIInterfaceOrientationPortraitUpsideDown</string>
60
+		<string>UIInterfaceOrientationLandscapeLeft</string>
61
+		<string>UIInterfaceOrientationLandscapeRight</string>
62
+	</array>
63
+</dict>
64
+</plist>

+ 16 - 0
MMProject/SceneDelegate.h

@@ -0,0 +1,16 @@
1
+//
2
+//  SceneDelegate.h
3
+//  MMProject
4
+//
5
+//  Created by admin on 2019/11/21.
6
+//  Copyright © 2019 kuxuan. All rights reserved.
7
+//
8
+
9
+#import <UIKit/UIKit.h>
10
+
11
+@interface SceneDelegate : UIResponder <UIWindowSceneDelegate>
12
+
13
+@property (strong, nonatomic) UIWindow * window;
14
+
15
+@end
16
+

+ 50 - 0
MMProject/SceneDelegate.m

@@ -0,0 +1,50 @@
1
+#import "SceneDelegate.h"
2
+
3
+@interface SceneDelegate ()
4
+
5
+@end
6
+
7
+@implementation SceneDelegate
8
+
9
+
10
+- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
11
+    // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
12
+    // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
13
+    // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
14
+}
15
+
16
+
17
+- (void)sceneDidDisconnect:(UIScene *)scene {
18
+    // Called as the scene is being released by the system.
19
+    // This occurs shortly after the scene enters the background, or when its session is discarded.
20
+    // Release any resources associated with this scene that can be re-created the next time the scene connects.
21
+    // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
22
+}
23
+
24
+
25
+- (void)sceneDidBecomeActive:(UIScene *)scene {
26
+    // Called when the scene has moved from an inactive state to an active state.
27
+    // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
28
+}
29
+
30
+
31
+- (void)sceneWillResignActive:(UIScene *)scene {
32
+    // Called when the scene will move from an active state to an inactive state.
33
+    // This may occur due to temporary interruptions (ex. an incoming phone call).
34
+}
35
+
36
+
37
+- (void)sceneWillEnterForeground:(UIScene *)scene {
38
+    // Called as the scene transitions from the background to the foreground.
39
+    // Use this method to undo the changes made on entering the background.
40
+}
41
+
42
+
43
+- (void)sceneDidEnterBackground:(UIScene *)scene {
44
+    // Called as the scene transitions from the foreground to the background.
45
+    // Use this method to save data, release shared resources, and store enough scene-specific state information
46
+    // to restore the scene back to its current state.
47
+}
48
+
49
+
50
+@end

+ 15 - 0
MMProject/ViewController.h

@@ -0,0 +1,15 @@
1
+//
2
+//  ViewController.h
3
+//  MMProject
4
+//
5
+//  Created by admin on 2019/11/21.
6
+//  Copyright © 2019 kuxuan. All rights reserved.
7
+//
8
+
9
+#import <UIKit/UIKit.h>
10
+
11
+@interface ViewController : UIViewController
12
+
13
+
14
+@end
15
+

+ 23 - 0
MMProject/ViewController.m

@@ -0,0 +1,23 @@
1
+//
2
+//  ViewController.m
3
+//  MMProject
4
+//
5
+//  Created by admin on 2019/11/21.
6
+//  Copyright © 2019 kuxuan. All rights reserved.
7
+//
8
+
9
+#import "ViewController.h"
10
+
11
+@interface ViewController ()
12
+
13
+@end
14
+
15
+@implementation ViewController
16
+
17
+- (void)viewDidLoad {
18
+    [super viewDidLoad];
19
+    // Do any additional setup after loading the view.
20
+}
21
+
22
+
23
+@end

+ 19 - 0
MMProject/main.m

@@ -0,0 +1,19 @@
1
+//
2
+//  main.m
3
+//  MMProject
4
+//
5
+//  Created by admin on 2019/11/21.
6
+//  Copyright © 2019 kuxuan. All rights reserved.
7
+//
8
+
9
+#import <UIKit/UIKit.h>
10
+#import "AppDelegate.h"
11
+
12
+int main(int argc, char * argv[]) {
13
+    NSString * appDelegateClassName;
14
+    @autoreleasepool {
15
+        // Setup code that might create autoreleased objects goes here.
16
+        appDelegateClassName = NSStringFromClass([AppDelegate class]);
17
+    }
18
+    return UIApplicationMain(argc, argv, nil, appDelegateClassName);
19
+}

+ 22 - 0
MMProjectTests/Info.plist

@@ -0,0 +1,22 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>CFBundleDevelopmentRegion</key>
6
+	<string>$(DEVELOPMENT_LANGUAGE)</string>
7
+	<key>CFBundleExecutable</key>
8
+	<string>$(EXECUTABLE_NAME)</string>
9
+	<key>CFBundleIdentifier</key>
10
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11
+	<key>CFBundleInfoDictionaryVersion</key>
12
+	<string>6.0</string>
13
+	<key>CFBundleName</key>
14
+	<string>$(PRODUCT_NAME)</string>
15
+	<key>CFBundlePackageType</key>
16
+	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
17
+	<key>CFBundleShortVersionString</key>
18
+	<string>1.0</string>
19
+	<key>CFBundleVersion</key>
20
+	<string>1</string>
21
+</dict>
22
+</plist>

+ 37 - 0
MMProjectTests/MMProjectTests.m

@@ -0,0 +1,37 @@
1
+//
2
+//  MMProjectTests.m
3
+//  MMProjectTests
4
+//
5
+//  Created by admin on 2019/11/21.
6
+//  Copyright © 2019 kuxuan. All rights reserved.
7
+//
8
+
9
+#import <XCTest/XCTest.h>
10
+
11
+@interface MMProjectTests : XCTestCase
12
+
13
+@end
14
+
15
+@implementation MMProjectTests
16
+
17
+- (void)setUp {
18
+    // Put setup code here. This method is called before the invocation of each test method in the class.
19
+}
20
+
21
+- (void)tearDown {
22
+    // Put teardown code here. This method is called after the invocation of each test method in the class.
23
+}
24
+
25
+- (void)testExample {
26
+    // This is an example of a functional test case.
27
+    // Use XCTAssert and related functions to verify your tests produce the correct results.
28
+}
29
+
30
+- (void)testPerformanceExample {
31
+    // This is an example of a performance test case.
32
+    [self measureBlock:^{
33
+        // Put the code you want to measure the time of here.
34
+    }];
35
+}
36
+
37
+@end

+ 22 - 0
MMProjectUITests/Info.plist

@@ -0,0 +1,22 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>CFBundleDevelopmentRegion</key>
6
+	<string>$(DEVELOPMENT_LANGUAGE)</string>
7
+	<key>CFBundleExecutable</key>
8
+	<string>$(EXECUTABLE_NAME)</string>
9
+	<key>CFBundleIdentifier</key>
10
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11
+	<key>CFBundleInfoDictionaryVersion</key>
12
+	<string>6.0</string>
13
+	<key>CFBundleName</key>
14
+	<string>$(PRODUCT_NAME)</string>
15
+	<key>CFBundlePackageType</key>
16
+	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
17
+	<key>CFBundleShortVersionString</key>
18
+	<string>1.0</string>
19
+	<key>CFBundleVersion</key>
20
+	<string>1</string>
21
+</dict>
22
+</plist>

+ 48 - 0
MMProjectUITests/MMProjectUITests.m

@@ -0,0 +1,48 @@
1
+//
2
+//  MMProjectUITests.m
3
+//  MMProjectUITests
4
+//
5
+//  Created by admin on 2019/11/21.
6
+//  Copyright © 2019 kuxuan. All rights reserved.
7
+//
8
+
9
+#import <XCTest/XCTest.h>
10
+
11
+@interface MMProjectUITests : XCTestCase
12
+
13
+@end
14
+
15
+@implementation MMProjectUITests
16
+
17
+- (void)setUp {
18
+    // Put setup code here. This method is called before the invocation of each test method in the class.
19
+
20
+    // In UI tests it is usually best to stop immediately when a failure occurs.
21
+    self.continueAfterFailure = NO;
22
+
23
+    // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
24
+}
25
+
26
+- (void)tearDown {
27
+    // Put teardown code here. This method is called after the invocation of each test method in the class.
28
+}
29
+
30
+- (void)testExample {
31
+    // UI tests must launch the application that they test.
32
+    XCUIApplication *app = [[XCUIApplication alloc] init];
33
+    [app launch];
34
+
35
+    // Use recording to get started writing UI tests.
36
+    // Use XCTAssert and related functions to verify your tests produce the correct results.
37
+}
38
+
39
+- (void)testLaunchPerformance {
40
+    if (@available(macOS 10.15, iOS 13.0, tvOS 13.0, *)) {
41
+        // This measures how long it takes to launch your application.
42
+        [self measureWithMetrics:@[XCTOSSignpostMetric.applicationLaunchMetric] block:^{
43
+            [[[XCUIApplication alloc] init] launch];
44
+        }];
45
+    }
46
+}
47
+
48
+@end