├── README.md
├── Astar.xcodeproj
├── xcuserdata
│ └── xujw.xcuserdatad
│ │ ├── xcdebugger
│ │ └── Breakpoints_v2.xcbkptlist
│ │ └── xcschemes
│ │ ├── xcschememanagement.plist
│ │ └── Astar.xcscheme
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcuserdata
│ │ └── xujw.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ └── xcshareddata
│ │ └── Astar.xccheckout
└── project.pbxproj
└── Astar
├── CAstar.h
├── main.cpp
└── CAstar.cpp
/README.md:
--------------------------------------------------------------------------------
1 | # AStarSearch
2 | 使用C++实现的A星寻路,其实原理网上到处都有,不足之处还望大神支出。
3 |
--------------------------------------------------------------------------------
/Astar.xcodeproj/xcuserdata/xujw.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/Astar.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Astar.xcodeproj/project.xcworkspace/xcuserdata/xujw.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sky068/AStarSearch/HEAD/Astar.xcodeproj/project.xcworkspace/xcuserdata/xujw.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Astar.xcodeproj/xcuserdata/xujw.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Astar.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | BAE12E581AD67B2500183119
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Astar.xcodeproj/project.xcworkspace/xcshareddata/Astar.xccheckout:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDESourceControlProjectFavoriteDictionaryKey
6 |
7 | IDESourceControlProjectIdentifier
8 | 97D59D2E-DCA1-42C8-9ED9-DF212037DEA9
9 | IDESourceControlProjectName
10 | Astar
11 | IDESourceControlProjectOriginsDictionary
12 |
13 | 648907B518033EBDB29022FEF6C08F3EDC1E4EA9
14 | https://github.com/sky068/AStarSearch.git
15 |
16 | IDESourceControlProjectPath
17 | Astar.xcodeproj
18 | IDESourceControlProjectRelativeInstallPathDictionary
19 |
20 | 648907B518033EBDB29022FEF6C08F3EDC1E4EA9
21 | ../..
22 |
23 | IDESourceControlProjectURL
24 | https://github.com/sky068/AStarSearch.git
25 | IDESourceControlProjectVersion
26 | 111
27 | IDESourceControlProjectWCCIdentifier
28 | 648907B518033EBDB29022FEF6C08F3EDC1E4EA9
29 | IDESourceControlProjectWCConfigurations
30 |
31 |
32 | IDESourceControlRepositoryExtensionIdentifierKey
33 | public.vcs.git
34 | IDESourceControlWCCIdentifierKey
35 | 648907B518033EBDB29022FEF6C08F3EDC1E4EA9
36 | IDESourceControlWCCName
37 | AStarSearch
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/Astar/CAstar.h:
--------------------------------------------------------------------------------
1 | //
2 | // CAstar.h
3 | // Astar
4 | //
5 | // Created by xujw on 15/4/9.
6 | // Copyright (c) 2015年 xujw. All rights reserved.
7 | //
8 | /*
9 | F:路径评分 = g+h
10 | G:走一格格子的花销
11 | H:当前格子到目标格子的估算花销
12 |
13 | 上下左右走一格花销为10,斜着走一格花销为14,以方便计算
14 | 即格子宽高为10 对角线为14
15 | */
16 | #ifndef __Astar__CAstar__
17 | #define __Astar__CAstar__
18 |
19 | #include
20 | #include
21 | #include
22 | using namespace std;
23 |
24 | //地图最大值
25 | #define MAX_X 10
26 | #define MAX_Y 10
27 |
28 | enum class AType
29 | {
30 | ATYPE_UNKNOWN,
31 | ATYPE_CLOSED,
32 | ATYPE_OPENED,
33 | ATYPE_BARRIER //障碍
34 | };
35 |
36 | class APoint
37 | {
38 | public:
39 | APoint();
40 | ~APoint();
41 | int x;
42 | int y;
43 | AType type; //类型:障碍、开放列表、关闭列表
44 | int f; //f = g+h
45 | int g;
46 | int h;
47 | APoint *parent;
48 | bool operator == (const APoint& po)
49 | {
50 | if (x == po.x && y == po.y)
51 | {
52 | return true;
53 | }
54 | return false;
55 | }
56 |
57 | };
58 |
59 | class CAstar
60 | {
61 | vector _openList; //开放列表
62 | vector _closeList; //关闭列表
63 | vector _neighbourList; //周边节点
64 | APoint* _endPoint;
65 | APoint* _curPoint;
66 | vector< vector > _allPoints;
67 | public:
68 | CAstar();
69 | ~CAstar();
70 | APoint* findWay(APoint* beginPoint,APoint* endPoint,vector< vector >& allPoints);
71 | // APoint* findWay(int beginX,int beginY,int endX,int endY);
72 | private:
73 | int getF(APoint *point);
74 | int getH(APoint *point);
75 | vector getNeighboringPoint(APoint* point);
76 | };
77 |
78 |
79 |
80 |
81 | #endif /* defined(__Astar__CAstar__) */
82 |
--------------------------------------------------------------------------------
/Astar/main.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // main.cpp
3 | // Astar
4 | //
5 | // Created by xujw on 15/4/9.
6 | // Copyright (c) 2015年 xujw. All rights reserved.
7 | //
8 |
9 | #include
10 | #include "CAstar.h"
11 |
12 | void printMap(char map[MAX_X][MAX_Y],int width,int height)
13 | {
14 | for (int i = 0; i > map;
45 | for (int i = 0; i tmp;
48 | for (int j = 0; jx = i;
52 | point->y = j;
53 | if (mapdata[i][j]=='0')
54 | {
55 | point->type = AType::ATYPE_BARRIER;
56 | }
57 | tmp.push_back(point);
58 | }
59 | map.push_back(tmp);
60 | }
61 |
62 | //开始寻路
63 | auto star = new CAstar();
64 | auto point = star->findWay(map[0][0], map[9][9], map);
65 |
66 | if (!point)
67 | {
68 | return 0;
69 | }
70 |
71 | cout<<"---下面是路径点(倒序)---"<x][point->y] = '*';
76 | cout<x<<","<y<parent;
78 | }
79 | cout<<"---打印路径---"<
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
51 |
53 |
59 |
60 |
61 |
62 |
63 |
64 |
70 |
72 |
78 |
79 |
80 |
81 |
83 |
84 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/Astar/CAstar.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // CAstar.cpp
3 | // Astar
4 | //
5 | // Created by xujw on 15/4/9.
6 | // Copyright (c) 2015年 xujw. All rights reserved.
7 | //
8 | // 上下左右走一格花销为10,斜着走一格花销为14,以方便计算
9 | // 即格子宽高为10 对角线为14
10 | #include "CAstar.h"
11 |
12 | //自定义排序函数
13 | bool mySort(const APoint* p1,const APoint* p2)
14 | {
15 | return p1->f < p2->f;
16 | }
17 |
18 | APoint::APoint():x(0)
19 | ,y(0)
20 | ,h(0)
21 | ,f(0)
22 | ,g(0)
23 | ,parent(nullptr)
24 | ,type(AType::ATYPE_UNKNOWN)
25 | {
26 | }
27 | APoint::~APoint()
28 | {
29 | }
30 |
31 |
32 | #pragma mark------CAstar-------
33 |
34 | CAstar::CAstar():_endPoint(nullptr)
35 | ,_curPoint(nullptr)
36 | {
37 | }
38 |
39 | CAstar::~CAstar()
40 | {
41 | _openList.clear();
42 | _closeList.clear();
43 | _neighbourList.clear();
44 | _allPoints.clear();
45 | }
46 |
47 | APoint* CAstar::findWay(APoint *beginPoint, APoint *endPoint,vector< vector >& allPoints)
48 | {
49 | //传递地图
50 | _allPoints = allPoints;
51 |
52 | _endPoint = endPoint;
53 |
54 | if (_endPoint->type == AType::ATYPE_BARRIER)
55 | {
56 | cout<<"终点是障碍"<type = AType::ATYPE_OPENED;
67 | beginPoint->f = getF(beginPoint);
68 | //---------
69 | do
70 | {
71 | //获取最小值的节点
72 | _curPoint = _openList[0];
73 | _openList.erase(_openList.begin());
74 | _curPoint->type = AType::ATYPE_CLOSED;
75 | _closeList.push_back(_curPoint);
76 |
77 | if (*_curPoint == *_endPoint)
78 | {
79 | cout<<"have find way"< neVec = getNeighboringPoint(_curPoint);
84 | for (int i = 0; itype == AType::ATYPE_CLOSED)
88 | {
89 | continue;
90 | }
91 | //是否在开放列表里
92 | if (tmpoint->type != AType::ATYPE_OPENED)
93 | {
94 | tmpoint->parent = _curPoint;
95 | tmpoint->g = _curPoint->g + 10;
96 | //计算H值
97 | tmpoint->h = getH(tmpoint);
98 | //添加到开放列表里
99 | _openList.push_back(tmpoint);
100 | tmpoint->type = AType::ATYPE_OPENED;
101 | }
102 | else
103 | {
104 | //已经在开放列表里
105 | if (tmpoint->h < _curPoint->h)
106 | {
107 | tmpoint->parent = _curPoint;
108 | tmpoint->g = _curPoint->g + 10;
109 | }
110 | }
111 | }
112 | //排序 F值最小的排在前面
113 | sort(_openList.begin(), _openList.end(), mySort);
114 |
115 | } while (_openList.size()>0);
116 |
117 |
118 | cout<<"---can not find way---"<g + getH(point));
133 | }
134 | int CAstar::getH(APoint *point)
135 | {
136 | //曼哈顿城市街区估算法
137 | return (abs(_endPoint->y - point->y) + abs(_endPoint->x - point->x))*10;
138 | }
139 |
140 | vector CAstar::getNeighboringPoint(APoint *point)
141 | {
142 | _neighbourList.clear();
143 | // cout<<"nei size:"<<_neighbourList.size()<x < MAX_X-1)
145 | {
146 | if (_allPoints[point->x+1][point->y]->type != AType::ATYPE_BARRIER)
147 | {
148 | _neighbourList.push_back(_allPoints[point->x+1][point->y]);
149 | }
150 | }
151 | if (point->x >0)
152 | {
153 | if (_allPoints[point->x-1][point->y]->type != AType::ATYPE_BARRIER)
154 | {
155 | _neighbourList.push_back(_allPoints[point->x-1][point->y]);
156 | }
157 | }
158 | if (point->y < MAX_Y-1)
159 | {
160 | if (_allPoints[point->x][point->y+1]->type != AType::ATYPE_BARRIER)
161 | {
162 | _neighbourList.push_back(_allPoints[point->x][point->y+1]);
163 | }
164 | }
165 | if (point->y >0)
166 | {
167 | if (_allPoints[point->x][point->y-1]->type != AType::ATYPE_BARRIER)
168 | {
169 | _neighbourList.push_back(_allPoints[point->x][point->y-1]);
170 | }
171 | }
172 |
173 | return _neighbourList;
174 | }
175 |
176 |
177 |
--------------------------------------------------------------------------------
/Astar.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | BAE12E5D1AD67B2500183119 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BAE12E5C1AD67B2500183119 /* main.cpp */; };
11 | BAE12E651AD67F9D00183119 /* CAstar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BAE12E631AD67F9D00183119 /* CAstar.cpp */; };
12 | /* End PBXBuildFile section */
13 |
14 | /* Begin PBXCopyFilesBuildPhase section */
15 | BAE12E571AD67B2500183119 /* CopyFiles */ = {
16 | isa = PBXCopyFilesBuildPhase;
17 | buildActionMask = 2147483647;
18 | dstPath = /usr/share/man/man1/;
19 | dstSubfolderSpec = 0;
20 | files = (
21 | );
22 | runOnlyForDeploymentPostprocessing = 1;
23 | };
24 | /* End PBXCopyFilesBuildPhase section */
25 |
26 | /* Begin PBXFileReference section */
27 | BAE12E591AD67B2500183119 /* Astar */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Astar; sourceTree = BUILT_PRODUCTS_DIR; };
28 | BAE12E5C1AD67B2500183119 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; };
29 | BAE12E631AD67F9D00183119 /* CAstar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAstar.cpp; sourceTree = ""; };
30 | BAE12E641AD67F9D00183119 /* CAstar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAstar.h; sourceTree = ""; };
31 | /* End PBXFileReference section */
32 |
33 | /* Begin PBXFrameworksBuildPhase section */
34 | BAE12E561AD67B2500183119 /* Frameworks */ = {
35 | isa = PBXFrameworksBuildPhase;
36 | buildActionMask = 2147483647;
37 | files = (
38 | );
39 | runOnlyForDeploymentPostprocessing = 0;
40 | };
41 | /* End PBXFrameworksBuildPhase section */
42 |
43 | /* Begin PBXGroup section */
44 | BAE12E501AD67B2500183119 = {
45 | isa = PBXGroup;
46 | children = (
47 | BAE12E5B1AD67B2500183119 /* Astar */,
48 | BAE12E5A1AD67B2500183119 /* Products */,
49 | );
50 | sourceTree = "";
51 | };
52 | BAE12E5A1AD67B2500183119 /* Products */ = {
53 | isa = PBXGroup;
54 | children = (
55 | BAE12E591AD67B2500183119 /* Astar */,
56 | );
57 | name = Products;
58 | sourceTree = "";
59 | };
60 | BAE12E5B1AD67B2500183119 /* Astar */ = {
61 | isa = PBXGroup;
62 | children = (
63 | BAE12E5C1AD67B2500183119 /* main.cpp */,
64 | BAE12E631AD67F9D00183119 /* CAstar.cpp */,
65 | BAE12E641AD67F9D00183119 /* CAstar.h */,
66 | );
67 | path = Astar;
68 | sourceTree = "";
69 | };
70 | /* End PBXGroup section */
71 |
72 | /* Begin PBXNativeTarget section */
73 | BAE12E581AD67B2500183119 /* Astar */ = {
74 | isa = PBXNativeTarget;
75 | buildConfigurationList = BAE12E601AD67B2500183119 /* Build configuration list for PBXNativeTarget "Astar" */;
76 | buildPhases = (
77 | BAE12E551AD67B2500183119 /* Sources */,
78 | BAE12E561AD67B2500183119 /* Frameworks */,
79 | BAE12E571AD67B2500183119 /* CopyFiles */,
80 | );
81 | buildRules = (
82 | );
83 | dependencies = (
84 | );
85 | name = Astar;
86 | productName = Astar;
87 | productReference = BAE12E591AD67B2500183119 /* Astar */;
88 | productType = "com.apple.product-type.tool";
89 | };
90 | /* End PBXNativeTarget section */
91 |
92 | /* Begin PBXProject section */
93 | BAE12E511AD67B2500183119 /* Project object */ = {
94 | isa = PBXProject;
95 | attributes = {
96 | LastUpgradeCheck = 0620;
97 | ORGANIZATIONNAME = xujw;
98 | TargetAttributes = {
99 | BAE12E581AD67B2500183119 = {
100 | CreatedOnToolsVersion = 6.2;
101 | };
102 | };
103 | };
104 | buildConfigurationList = BAE12E541AD67B2500183119 /* Build configuration list for PBXProject "Astar" */;
105 | compatibilityVersion = "Xcode 3.2";
106 | developmentRegion = English;
107 | hasScannedForEncodings = 0;
108 | knownRegions = (
109 | en,
110 | );
111 | mainGroup = BAE12E501AD67B2500183119;
112 | productRefGroup = BAE12E5A1AD67B2500183119 /* Products */;
113 | projectDirPath = "";
114 | projectRoot = "";
115 | targets = (
116 | BAE12E581AD67B2500183119 /* Astar */,
117 | );
118 | };
119 | /* End PBXProject section */
120 |
121 | /* Begin PBXSourcesBuildPhase section */
122 | BAE12E551AD67B2500183119 /* Sources */ = {
123 | isa = PBXSourcesBuildPhase;
124 | buildActionMask = 2147483647;
125 | files = (
126 | BAE12E5D1AD67B2500183119 /* main.cpp in Sources */,
127 | BAE12E651AD67F9D00183119 /* CAstar.cpp in Sources */,
128 | );
129 | runOnlyForDeploymentPostprocessing = 0;
130 | };
131 | /* End PBXSourcesBuildPhase section */
132 |
133 | /* Begin XCBuildConfiguration section */
134 | BAE12E5E1AD67B2500183119 /* Debug */ = {
135 | isa = XCBuildConfiguration;
136 | buildSettings = {
137 | ALWAYS_SEARCH_USER_PATHS = NO;
138 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
139 | CLANG_CXX_LIBRARY = "libc++";
140 | CLANG_ENABLE_MODULES = YES;
141 | CLANG_ENABLE_OBJC_ARC = YES;
142 | CLANG_WARN_BOOL_CONVERSION = YES;
143 | CLANG_WARN_CONSTANT_CONVERSION = YES;
144 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
145 | CLANG_WARN_EMPTY_BODY = YES;
146 | CLANG_WARN_ENUM_CONVERSION = YES;
147 | CLANG_WARN_INT_CONVERSION = YES;
148 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
149 | CLANG_WARN_UNREACHABLE_CODE = YES;
150 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
151 | COPY_PHASE_STRIP = NO;
152 | ENABLE_STRICT_OBJC_MSGSEND = YES;
153 | GCC_C_LANGUAGE_STANDARD = gnu99;
154 | GCC_DYNAMIC_NO_PIC = NO;
155 | GCC_OPTIMIZATION_LEVEL = 0;
156 | GCC_PREPROCESSOR_DEFINITIONS = (
157 | "DEBUG=1",
158 | "$(inherited)",
159 | );
160 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
161 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
162 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
163 | GCC_WARN_UNDECLARED_SELECTOR = YES;
164 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
165 | GCC_WARN_UNUSED_FUNCTION = YES;
166 | GCC_WARN_UNUSED_VARIABLE = YES;
167 | MACOSX_DEPLOYMENT_TARGET = 10.10;
168 | MTL_ENABLE_DEBUG_INFO = YES;
169 | ONLY_ACTIVE_ARCH = YES;
170 | SDKROOT = macosx;
171 | };
172 | name = Debug;
173 | };
174 | BAE12E5F1AD67B2500183119 /* Release */ = {
175 | isa = XCBuildConfiguration;
176 | buildSettings = {
177 | ALWAYS_SEARCH_USER_PATHS = NO;
178 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
179 | CLANG_CXX_LIBRARY = "libc++";
180 | CLANG_ENABLE_MODULES = YES;
181 | CLANG_ENABLE_OBJC_ARC = YES;
182 | CLANG_WARN_BOOL_CONVERSION = YES;
183 | CLANG_WARN_CONSTANT_CONVERSION = YES;
184 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
185 | CLANG_WARN_EMPTY_BODY = YES;
186 | CLANG_WARN_ENUM_CONVERSION = YES;
187 | CLANG_WARN_INT_CONVERSION = YES;
188 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
189 | CLANG_WARN_UNREACHABLE_CODE = YES;
190 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
191 | COPY_PHASE_STRIP = NO;
192 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
193 | ENABLE_NS_ASSERTIONS = NO;
194 | ENABLE_STRICT_OBJC_MSGSEND = YES;
195 | GCC_C_LANGUAGE_STANDARD = gnu99;
196 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
197 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
198 | GCC_WARN_UNDECLARED_SELECTOR = YES;
199 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
200 | GCC_WARN_UNUSED_FUNCTION = YES;
201 | GCC_WARN_UNUSED_VARIABLE = YES;
202 | MACOSX_DEPLOYMENT_TARGET = 10.10;
203 | MTL_ENABLE_DEBUG_INFO = NO;
204 | SDKROOT = macosx;
205 | };
206 | name = Release;
207 | };
208 | BAE12E611AD67B2500183119 /* Debug */ = {
209 | isa = XCBuildConfiguration;
210 | buildSettings = {
211 | PRODUCT_NAME = "$(TARGET_NAME)";
212 | };
213 | name = Debug;
214 | };
215 | BAE12E621AD67B2500183119 /* Release */ = {
216 | isa = XCBuildConfiguration;
217 | buildSettings = {
218 | PRODUCT_NAME = "$(TARGET_NAME)";
219 | };
220 | name = Release;
221 | };
222 | /* End XCBuildConfiguration section */
223 |
224 | /* Begin XCConfigurationList section */
225 | BAE12E541AD67B2500183119 /* Build configuration list for PBXProject "Astar" */ = {
226 | isa = XCConfigurationList;
227 | buildConfigurations = (
228 | BAE12E5E1AD67B2500183119 /* Debug */,
229 | BAE12E5F1AD67B2500183119 /* Release */,
230 | );
231 | defaultConfigurationIsVisible = 0;
232 | defaultConfigurationName = Release;
233 | };
234 | BAE12E601AD67B2500183119 /* Build configuration list for PBXNativeTarget "Astar" */ = {
235 | isa = XCConfigurationList;
236 | buildConfigurations = (
237 | BAE12E611AD67B2500183119 /* Debug */,
238 | BAE12E621AD67B2500183119 /* Release */,
239 | );
240 | defaultConfigurationIsVisible = 0;
241 | };
242 | /* End XCConfigurationList section */
243 | };
244 | rootObject = BAE12E511AD67B2500183119 /* Project object */;
245 | }
246 |
--------------------------------------------------------------------------------