├── 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 | --------------------------------------------------------------------------------