开始本页总览开始 RoadMap https://roadmap.shiOSJavaScriptTypeScriptiOS DeveloperSwift (Recommended)History and Why Swift?Benefits over Objective-CSwift BasicsObjective-CObjective-C BasicsInteroperability with SwiftiOS ArchitectureCore OSCore ServicesMediaCore GraphicsCore AnimationAVFoundationCore ImageCore AudioMetalCocoa TouchCore Programming ConceptsOOPFunctional ProgrammingMemory ManagementViewController LifecycleError HandlingConcurrency (GCD, async/await)The FundamentalsPick a LanguageVersion ControlGitGitHubApp ComponentsXcodeSetting UpInstallingPreferencesNew ProjectNavigatingInterface overviewToolbarNavigatorsEditorsProject FilesGroupsDebuggerBreakpointsDebug NavigatorSteppingInterface BuilderInterface BuilderIBOutletsIBActionsAuto layoutUIKitComponentsViewsView ControllersUser InteractionsBasic InterfacesStoryboardsXibsNavigationView TransitionsSwiftUIBasicsDeclarative SyntaxComponentsState ManagementData bindingSimple UI BuildingBuilding InterfacesViews and ModifiersNavigationView TransitionsInterfaces and NavigationUI DesignHIGUIKitViews, View ControllersNavigation Controllers, SeguesNavigation StacksPushing PresentingModals and NavigationSwiftUINavigation StacksNavigation ViewNavigationLinkPresenting / Dismissing viewsCore AnimationBasics / Creating AnimationsLottieDesign ArchitectureMVCMVPMVVMMVVM-CVIPERTCAArchitectural Patterns— UI Kit Basics — — Building Simple UIs — Reactive ProgrammingCombinePublishers / SubscribersOperators & PipelinesCombine and MVVMRxSwiftObservables & observersSubjectsRxSwift with MVVMOperatorsSchedulersPatterns and TechniquesDelegate PatternImplementing DelegatesCallbacksClosuresUnderstanding and using ClosuresCapturing Values & Memory Mgmt.Callback HellAsync / AwaitConcurrencyData PersistenceCore DataUser DefaultsKeychainFile SystemSQLiteJSON / XMLParsingSerializingNetworkingHTTP / HTTPsRESTGraphQLURLSessionAlamofireAsynchronismConcurrency and MultithreadingGCDOperation QueuesDependency ManagerCocoaPodsCarthageSwift Package ManagerFrameworks & LibraryXCFrameworkStatic LibraryDynamic LibraryAccessibilityAccessibility InspectorVoice OverDynamic TypeCommon ServicesFrameworksARKitHealthKitGameKitMapKitCore MLLintingCode Quality ToolsSwiftLintTailorSwiftFormatDebuggingDebugging TechniquesXcode DebuggerProfiling InstrumentsTestingUnit & UI TestingXCTestXCUITestTest Plan & CoverageApp DistributionApp Store DistributionTestFlightFastLaneCI / CDJenkinsCircleCIGitHub ActionsGitLabAzure DevOpsApp Store Optimization (ASO)Continuous LearningKeeping Updated with WWDCLatest Swift VersionLatest iOS SDKNew Feature AnnouncementsStorageJavaScriptIntroduction to JavaScriptWhat is JavaScriptHistory of JavaScriptJavaScript VersionsHow to run JavaScriptVariable DeclarationsHoistingVariable Naming RulesVariable ScopesvarletconstBlockFunctionGlobalAll about VariablesData TypesstringundefinednumberbigintbooleannullSymbolPrimitive TypesObjectObject PrototypePrototypal Inheritancetypeof operatorBuilt-in ObjectsType CastingType Conversion vs CoercionExplicit Type CastingImplicit Type CastingData StructuresKeyed CollectionsMapWeak MapSetWeak SetIndexed CollectionsTyped ArraysArraysStructured DataJSONEquality Comparisons=====Object.isValue Comparison OperatorsisLooselyEqualisStrictlyEqualSameValueZeroEquality AlgorithmsLoops and Iterationsfordo...whilewhilefor...in loopfor...of loopbreak / continueControl FlowExceptional HandlingConditional Statementsif...elseSwitchthrow statementtry/catch/finallyError ObjectsExpressions & OperatorsAssignment OperatorsComparison OperatorsArithmetic OperatorsBitwise OperatorsLogical OperatorsBigInt OperatorsString OperatorsConditional OperatorsComma OperatorsUnary OperatorsRelational OperatorsFunctionsFunction ParametersArrow FunctionsIIFEsarguments objectScope & Function StackBuilt-in FunctionsDefault ParamsRestRecursionLexical ScopingClosuresStrict ModeUsing (this) keywordin a methodin a functionusing it alonein event handlersin arrow functionsFunction BorrowingExplicit BindingcallapplybindAsynchronous JavaScriptEvent LoopsetTimeoutsetIntervalCallbacksPromisesCallback Hellasync/awaitWorking with APIsFetchXMLHTTPRequestClassesIterators and GeneratorsModules in JavaScriptCommonJSESMMemory ManagementMemory LifecycleDOM APIsGarbage CollectionUsing Browser DevToolsDebugging IssuesDebugging Memory LeaksDebugging PerformanceSameValueTypeScriptJavaScript RoadmapIntroduction to TypeScriptTypeScript vs JavaScriptTS and JS InteroperabilityInstallation and Configurationtsconfig.jsonCompiler OptionsRunning TypeScripttscts-nodeTS PlaygroundTypeScript TypesPrimitive TypesbooleannumberstringvoidundefinednullObject TypesInterfaceClassEnumArrayTupleTop TypesObjectunknownanyBottom TypesneverAssertionsas constas [type]as anyNon-null Assertionsatisfies keywordType InferenceType CompatibilityCombining TypesUnion TypesIntersection TypesType Aliaseskeyof OperatorType Guards / NarrowinginstanceoftypeofEqualityTruthinessType PredicatesTypeScript FunctionsTyping FunctionsFunction OverloadingTypeScript InterfacesTypes vs InterfacesExtending InterfacesInterface DeclarationHybrid TypesClassesConstructor ParamsConstructor OverloadingAccess ModifiersAbstract ClassesInheritance vs PolymorphismMethod OverridingGenericsGeneric TypesGeneric ConstraintsDecoratorsUtility TypesPartialPickOmitReadonlyRecordExcludeExtractNonNullableParametersReturnTypeInstanceTypeAwaitedAdvanced TypesMapped TypesConditional TypesLiteral TypesTemplate Literal TypesRecursive TypesTypeScript ModulesNamespacesAmbient ModulesExternal ModulesNamespace AgumentationGlobal AugmentationEcosystemFormattingLintingUseful PackagesBuild Tools