Skip to content

Commit bc3e0b6

Browse files
committed
Give_Demo_For_46题与51题_KVO原理_如何手动触发一个value的KVO
1 parent 775ee52 commit bc3e0b6

File tree

16 files changed

+797
-11
lines changed

16 files changed

+797
-11
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,309 @@
1+
// !$*UTF8*$!
2+
{
3+
archiveVersion = 1;
4+
classes = {
5+
};
6+
objectVersion = 46;
7+
objects = {
8+
9+
/* Begin PBXBuildFile section */
10+
9A1530491CB4E4C900EF35B5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A1530481CB4E4C900EF35B5 /* main.m */; };
11+
9A15304C1CB4E4C900EF35B5 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A15304B1CB4E4C900EF35B5 /* AppDelegate.m */; };
12+
9A15304F1CB4E4C900EF35B5 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A15304E1CB4E4C900EF35B5 /* ViewController.m */; };
13+
9A1530521CB4E4C900EF35B5 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A1530501CB4E4C900EF35B5 /* Main.storyboard */; };
14+
9A1530541CB4E4C900EF35B5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A1530531CB4E4C900EF35B5 /* Assets.xcassets */; };
15+
9A1530571CB4E4C900EF35B5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A1530551CB4E4C900EF35B5 /* LaunchScreen.storyboard */; };
16+
/* End PBXBuildFile section */
17+
18+
/* Begin PBXFileReference section */
19+
9A1530441CB4E4C900EF35B5 /* KVO实现原理.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "KVO实现原理.app"; sourceTree = BUILT_PRODUCTS_DIR; };
20+
9A1530481CB4E4C900EF35B5 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
21+
9A15304A1CB4E4C900EF35B5 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
22+
9A15304B1CB4E4C900EF35B5 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
23+
9A15304D1CB4E4C900EF35B5 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
24+
9A15304E1CB4E4C900EF35B5 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
25+
9A1530511CB4E4C900EF35B5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
26+
9A1530531CB4E4C900EF35B5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
27+
9A1530561CB4E4C900EF35B5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
28+
9A1530581CB4E4C900EF35B5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
29+
/* End PBXFileReference section */
30+
31+
/* Begin PBXFrameworksBuildPhase section */
32+
9A1530411CB4E4C900EF35B5 /* Frameworks */ = {
33+
isa = PBXFrameworksBuildPhase;
34+
buildActionMask = 2147483647;
35+
files = (
36+
);
37+
runOnlyForDeploymentPostprocessing = 0;
38+
};
39+
/* End PBXFrameworksBuildPhase section */
40+
41+
/* Begin PBXGroup section */
42+
9A15303B1CB4E4C900EF35B5 = {
43+
isa = PBXGroup;
44+
children = (
45+
9A1530461CB4E4C900EF35B5 /* KVO实现原理 */,
46+
9A1530451CB4E4C900EF35B5 /* Products */,
47+
);
48+
sourceTree = "<group>";
49+
};
50+
9A1530451CB4E4C900EF35B5 /* Products */ = {
51+
isa = PBXGroup;
52+
children = (
53+
9A1530441CB4E4C900EF35B5 /* KVO实现原理.app */,
54+
);
55+
name = Products;
56+
sourceTree = "<group>";
57+
};
58+
9A1530461CB4E4C900EF35B5 /* KVO实现原理 */ = {
59+
isa = PBXGroup;
60+
children = (
61+
9A15304A1CB4E4C900EF35B5 /* AppDelegate.h */,
62+
9A15304B1CB4E4C900EF35B5 /* AppDelegate.m */,
63+
9A15304D1CB4E4C900EF35B5 /* ViewController.h */,
64+
9A15304E1CB4E4C900EF35B5 /* ViewController.m */,
65+
9A1530501CB4E4C900EF35B5 /* Main.storyboard */,
66+
9A1530531CB4E4C900EF35B5 /* Assets.xcassets */,
67+
9A1530551CB4E4C900EF35B5 /* LaunchScreen.storyboard */,
68+
9A1530581CB4E4C900EF35B5 /* Info.plist */,
69+
9A1530471CB4E4C900EF35B5 /* Supporting Files */,
70+
);
71+
path = "KVO实现原理";
72+
sourceTree = "<group>";
73+
};
74+
9A1530471CB4E4C900EF35B5 /* Supporting Files */ = {
75+
isa = PBXGroup;
76+
children = (
77+
9A1530481CB4E4C900EF35B5 /* main.m */,
78+
);
79+
name = "Supporting Files";
80+
sourceTree = "<group>";
81+
};
82+
/* End PBXGroup section */
83+
84+
/* Begin PBXNativeTarget section */
85+
9A1530431CB4E4C900EF35B5 /* KVO实现原理 */ = {
86+
isa = PBXNativeTarget;
87+
buildConfigurationList = 9A15305B1CB4E4C900EF35B5 /* Build configuration list for PBXNativeTarget "KVO实现原理" */;
88+
buildPhases = (
89+
9A1530401CB4E4C900EF35B5 /* Sources */,
90+
9A1530411CB4E4C900EF35B5 /* Frameworks */,
91+
9A1530421CB4E4C900EF35B5 /* Resources */,
92+
);
93+
buildRules = (
94+
);
95+
dependencies = (
96+
);
97+
name = "KVO实现原理";
98+
productName = "KVO实现原理";
99+
productReference = 9A1530441CB4E4C900EF35B5 /* KVO实现原理.app */;
100+
productType = "com.apple.product-type.application";
101+
};
102+
/* End PBXNativeTarget section */
103+
104+
/* Begin PBXProject section */
105+
9A15303C1CB4E4C900EF35B5 /* Project object */ = {
106+
isa = PBXProject;
107+
attributes = {
108+
LastUpgradeCheck = 0730;
109+
ORGANIZATIONNAME = ElonChan;
110+
TargetAttributes = {
111+
9A1530431CB4E4C900EF35B5 = {
112+
CreatedOnToolsVersion = 7.3;
113+
};
114+
};
115+
};
116+
buildConfigurationList = 9A15303F1CB4E4C900EF35B5 /* Build configuration list for PBXProject "KVO实现原理" */;
117+
compatibilityVersion = "Xcode 3.2";
118+
developmentRegion = English;
119+
hasScannedForEncodings = 0;
120+
knownRegions = (
121+
en,
122+
Base,
123+
);
124+
mainGroup = 9A15303B1CB4E4C900EF35B5;
125+
productRefGroup = 9A1530451CB4E4C900EF35B5 /* Products */;
126+
projectDirPath = "";
127+
projectRoot = "";
128+
targets = (
129+
9A1530431CB4E4C900EF35B5 /* KVO实现原理 */,
130+
);
131+
};
132+
/* End PBXProject section */
133+
134+
/* Begin PBXResourcesBuildPhase section */
135+
9A1530421CB4E4C900EF35B5 /* Resources */ = {
136+
isa = PBXResourcesBuildPhase;
137+
buildActionMask = 2147483647;
138+
files = (
139+
9A1530571CB4E4C900EF35B5 /* LaunchScreen.storyboard in Resources */,
140+
9A1530541CB4E4C900EF35B5 /* Assets.xcassets in Resources */,
141+
9A1530521CB4E4C900EF35B5 /* Main.storyboard in Resources */,
142+
);
143+
runOnlyForDeploymentPostprocessing = 0;
144+
};
145+
/* End PBXResourcesBuildPhase section */
146+
147+
/* Begin PBXSourcesBuildPhase section */
148+
9A1530401CB4E4C900EF35B5 /* Sources */ = {
149+
isa = PBXSourcesBuildPhase;
150+
buildActionMask = 2147483647;
151+
files = (
152+
9A15304F1CB4E4C900EF35B5 /* ViewController.m in Sources */,
153+
9A15304C1CB4E4C900EF35B5 /* AppDelegate.m in Sources */,
154+
9A1530491CB4E4C900EF35B5 /* main.m in Sources */,
155+
);
156+
runOnlyForDeploymentPostprocessing = 0;
157+
};
158+
/* End PBXSourcesBuildPhase section */
159+
160+
/* Begin PBXVariantGroup section */
161+
9A1530501CB4E4C900EF35B5 /* Main.storyboard */ = {
162+
isa = PBXVariantGroup;
163+
children = (
164+
9A1530511CB4E4C900EF35B5 /* Base */,
165+
);
166+
name = Main.storyboard;
167+
sourceTree = "<group>";
168+
};
169+
9A1530551CB4E4C900EF35B5 /* LaunchScreen.storyboard */ = {
170+
isa = PBXVariantGroup;
171+
children = (
172+
9A1530561CB4E4C900EF35B5 /* Base */,
173+
);
174+
name = LaunchScreen.storyboard;
175+
sourceTree = "<group>";
176+
};
177+
/* End PBXVariantGroup section */
178+
179+
/* Begin XCBuildConfiguration section */
180+
9A1530591CB4E4C900EF35B5 /* Debug */ = {
181+
isa = XCBuildConfiguration;
182+
buildSettings = {
183+
ALWAYS_SEARCH_USER_PATHS = NO;
184+
CLANG_ANALYZER_NONNULL = YES;
185+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
186+
CLANG_CXX_LIBRARY = "libc++";
187+
CLANG_ENABLE_MODULES = YES;
188+
CLANG_ENABLE_OBJC_ARC = YES;
189+
CLANG_WARN_BOOL_CONVERSION = YES;
190+
CLANG_WARN_CONSTANT_CONVERSION = YES;
191+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
192+
CLANG_WARN_EMPTY_BODY = YES;
193+
CLANG_WARN_ENUM_CONVERSION = YES;
194+
CLANG_WARN_INT_CONVERSION = YES;
195+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
196+
CLANG_WARN_UNREACHABLE_CODE = YES;
197+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
198+
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
199+
COPY_PHASE_STRIP = NO;
200+
DEBUG_INFORMATION_FORMAT = dwarf;
201+
ENABLE_STRICT_OBJC_MSGSEND = YES;
202+
ENABLE_TESTABILITY = YES;
203+
GCC_C_LANGUAGE_STANDARD = gnu99;
204+
GCC_DYNAMIC_NO_PIC = NO;
205+
GCC_NO_COMMON_BLOCKS = YES;
206+
GCC_OPTIMIZATION_LEVEL = 0;
207+
GCC_PREPROCESSOR_DEFINITIONS = (
208+
"DEBUG=1",
209+
"$(inherited)",
210+
);
211+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
212+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
213+
GCC_WARN_UNDECLARED_SELECTOR = YES;
214+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
215+
GCC_WARN_UNUSED_FUNCTION = YES;
216+
GCC_WARN_UNUSED_VARIABLE = YES;
217+
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
218+
MTL_ENABLE_DEBUG_INFO = YES;
219+
ONLY_ACTIVE_ARCH = YES;
220+
SDKROOT = iphoneos;
221+
TARGETED_DEVICE_FAMILY = "1,2";
222+
};
223+
name = Debug;
224+
};
225+
9A15305A1CB4E4C900EF35B5 /* Release */ = {
226+
isa = XCBuildConfiguration;
227+
buildSettings = {
228+
ALWAYS_SEARCH_USER_PATHS = NO;
229+
CLANG_ANALYZER_NONNULL = YES;
230+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
231+
CLANG_CXX_LIBRARY = "libc++";
232+
CLANG_ENABLE_MODULES = YES;
233+
CLANG_ENABLE_OBJC_ARC = YES;
234+
CLANG_WARN_BOOL_CONVERSION = YES;
235+
CLANG_WARN_CONSTANT_CONVERSION = YES;
236+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
237+
CLANG_WARN_EMPTY_BODY = YES;
238+
CLANG_WARN_ENUM_CONVERSION = YES;
239+
CLANG_WARN_INT_CONVERSION = YES;
240+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
241+
CLANG_WARN_UNREACHABLE_CODE = YES;
242+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
243+
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
244+
COPY_PHASE_STRIP = NO;
245+
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
246+
ENABLE_NS_ASSERTIONS = NO;
247+
ENABLE_STRICT_OBJC_MSGSEND = YES;
248+
GCC_C_LANGUAGE_STANDARD = gnu99;
249+
GCC_NO_COMMON_BLOCKS = YES;
250+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
251+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
252+
GCC_WARN_UNDECLARED_SELECTOR = YES;
253+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
254+
GCC_WARN_UNUSED_FUNCTION = YES;
255+
GCC_WARN_UNUSED_VARIABLE = YES;
256+
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
257+
MTL_ENABLE_DEBUG_INFO = NO;
258+
SDKROOT = iphoneos;
259+
TARGETED_DEVICE_FAMILY = "1,2";
260+
VALIDATE_PRODUCT = YES;
261+
};
262+
name = Release;
263+
};
264+
9A15305C1CB4E4C900EF35B5 /* Debug */ = {
265+
isa = XCBuildConfiguration;
266+
buildSettings = {
267+
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
268+
INFOPLIST_FILE = "KVO实现原理/Info.plist";
269+
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
270+
PRODUCT_BUNDLE_IDENTIFIER = "LeanCloud.KVO----";
271+
PRODUCT_NAME = "$(TARGET_NAME)";
272+
};
273+
name = Debug;
274+
};
275+
9A15305D1CB4E4C900EF35B5 /* Release */ = {
276+
isa = XCBuildConfiguration;
277+
buildSettings = {
278+
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
279+
INFOPLIST_FILE = "KVO实现原理/Info.plist";
280+
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
281+
PRODUCT_BUNDLE_IDENTIFIER = "LeanCloud.KVO----";
282+
PRODUCT_NAME = "$(TARGET_NAME)";
283+
};
284+
name = Release;
285+
};
286+
/* End XCBuildConfiguration section */
287+
288+
/* Begin XCConfigurationList section */
289+
9A15303F1CB4E4C900EF35B5 /* Build configuration list for PBXProject "KVO实现原理" */ = {
290+
isa = XCConfigurationList;
291+
buildConfigurations = (
292+
9A1530591CB4E4C900EF35B5 /* Debug */,
293+
9A15305A1CB4E4C900EF35B5 /* Release */,
294+
);
295+
defaultConfigurationIsVisible = 0;
296+
defaultConfigurationName = Release;
297+
};
298+
9A15305B1CB4E4C900EF35B5 /* Build configuration list for PBXNativeTarget "KVO实现原理" */ = {
299+
isa = XCConfigurationList;
300+
buildConfigurations = (
301+
9A15305C1CB4E4C900EF35B5 /* Debug */,
302+
9A15305D1CB4E4C900EF35B5 /* Release */,
303+
);
304+
defaultConfigurationIsVisible = 0;
305+
};
306+
/* End XCConfigurationList section */
307+
};
308+
rootObject = 9A15303C1CB4E4C900EF35B5 /* Project object */;
309+
}

01《招聘一个靠谱的iOS》面试题参考答案/Demo_46题与51题_KVO原理_如何手动触发一个value的KVO/KVO实现原理.xcodeproj/project.xcworkspace/contents.xcworkspacedata

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Bucket
3+
type = "1"
4+
version = "2.0">
5+
</Bucket>

0 commit comments

Comments
 (0)