An open API service indexing awesome lists of open source software.

https://github.com/maximbilan/swifthandbook

Explore essential Swift nuggets in our "Swift Handbook" repository. Tailored for both beginners or pros.
https://github.com/maximbilan/swifthandbook

handbook swift tips tips-and-tricks tips-tricks

Last synced: 4 months ago
JSON representation

Explore essential Swift nuggets in our "Swift Handbook" repository. Tailored for both beginners or pros.

Awesome Lists containing this project

README

        

# Swift Handbook
Welcome to "Swift Handbook," where we peel back the layers of Swift, revealing the nifty tricks and under-the-hood magic that make this language a modern marvel. Our repository is your go-to treasure trove for bite-sized wisdom, dishing out savvy programming insights. Whether you're a seasoned coder or just starting, our tips cater to all, making complex concepts digestible and fun.

# Tips

[1. defer](/tips/001_defer/script.md)

[2. Unavailable macro](/tips/002_unavailable/script.md)

[3. Semicolons](/tips/003_semicolons/script.md)

[4. if case let](/tips/004_if_case_let/script.md)

[5. Typealiases](/tips/005_typealiases_for_functions/script.md)

[6. @discardableResult](/tips/006_@discardableResult/script.md)

[7. CaseIterable](/tips/007_caseIterable/script.md)

[8. CustomStringConvertible protocol](/tips/008_customStringConvertible/script.md)

[9. zip](/tips/009_zip/script.md)

[10. reduce](/tips/010_reduce/script.md)

[11. deinit](/tips/011_deinit/script.md)

[12. Lazy](/tips/012_lazy/script.md)

[13. Lazy Threads](/tips/013_lazy_threads/script.md)

[14. inout](/tips/014_inout/script.md)

[15. autoclosure](/tips/015_autoclosure/script.md)

[16. where for loop](/tips/016_where_for_loop/script.md)

[17. Variadic Arguments](/tips/017_variadic_arguments/script.md)

[18. @dynamicCallable](/tips/018_@dynamicCallable/script.md)

[19. Opaque Types](/tips/019_opaque_types/script.md)

[20. Dump](/tips/020_dump/script.md)

[21. Result](/tips/021_result/script.md)

[22. Large number separators](/tips/022_large_number_separators/script.md)

[23. Actor](/tips/023_actor/script.md)

[24. @nonobjc](/tips/024_@nonobjc/script.md)

[25. @propertyWrapper](/tips/025_@propertyWrapper/script.md)

[26. mutating](/tips/026_mutating/script.md)

[27. fallthrough](/tips/027_fallthrough/script.md)

[28. Tuples](/tips/028_tuples/script.md)

[29. @dynamicMemberLookup](/tips/029_@dynamicMemberLookup/script.md)

[30. @inlinable](/tips/030_@inlinable/script.md)

[31. @autoreleasepool](/tips/031_@autoreleasepool/script.md)

[32. guard](/tips/032_guard/script.md)

[33. targetEnvironment](/tips/033_targetEnvironment/script.md)

[34. Optionals](/tips/034_optionals/script.md)

[35. Closures](/tips/035_closures/script.md)

[36. @atomic](/tips/036_@atomic/script.md)

[37. SOLID Single responsibility principle](/tips/037_solid_srp/script.md)

[38. SOLID Open–closed principle](/tips/038_solid_ocp/script.md)

[39. SOLID Liskov substitution principle](/tips/039_solid_lsp/script.md)

[40. SOLID Interface segregation principle](/tips/040_solid_isp/script.md)

[41. SOLID Dependency inversion principle](/tips/041_solid_dip/script.md)

[42. Task](/tips/042_task/script.md)

[43. Detached Task](/tips/043_task_detached/script.md)

[44. compactMap](/tips/044_compactMap/script.md)

[45. GeometryReader](/tips/045_GeometryReader/script.md)

[46. Safe Array Extension](/tips/046_safe_array_extension/script.md)

[47. Property observers](/tips/047_property_observers/script.md)

[48. Codable](/tips/048_codable/script.md)

[49. Equatable](/tips/049_equatable/script.md)

[50. Optional Protocol](/tips/050_protocol_optional/script.md)

[51. @Environment](/tips/051_@Environment/script.md)

[52. @EnvironmentObject](/tips/052_@EnvironmentObject/script.md)

[53. App Start](/tips/053_app_start/script.md)

[54. Type Metadata](/tips/054_type_metadata/script.md)

[55. Final](/tips/055_final/script.md)

[56. Main Thread check](/tips/056_is_main_thread/script.md)

[57. Optional chaining](/tips/057_optional_chaining/script.md)

[58. PassthroughSubject](/tips/058_PassthroughSubject/script.md)

[59. CurrentValueSubject](/tips/059_CurrentValueSubject/script.md)

[60. Intersection](/tips/060_intersection/script.md)

[61. Union](/tips/061_union/script.md)

[62. Subtract](/tips/062_subtract/script.md)

[63. Symmetric Difference](/tips/063_symmetric_difference/script.md)

[64. foreach](/tips/064_foreach/script.md)

[65. AsyncSequence](/tips/065_async_sequence/script.md)

[66. @objc members](/tips/066_objc_members/script.md)

[67. Recursion](/tips/067_recursion/script.md)

[68. Polymorphism](/tips/068_polymorphism/script.md)

[69. Inheritance](/tips/069_inheritance/script.md)

[70. Composition](/tips/070_composition/script.md)

[71. Delegation](/tips/071_delegation/script.md)

[72. Abstraction](/tips/072_abstraction/script.md)

[73. KISS](/tips/073_kiss/script.md)

[74. Encapsulation](/tips/074_encapsulation/script.md)

[75. Pure function](/tips/075_pure_function/script.md)

[76. FetchRequest](/tips/076_fetch_request/script.md)

[77. Random](/tips/077_random/script.md)

[78. Private init](/tips/078_private_init/script.md)

[79. Optional Initializer](/tips/079_optional_initializer/script.md)

[80. Designated Initializer](/tips/080_designated_initializer/script.md)

[81. Convenience Initializer](/tips/081_convenience_initializer/script.md)

[82. How to check the Swift version at compile time](/tips/082_version/script.md)

[83. How to convert between camel case and snake case](/tips/083_key_encoding_strategy/script.md)

[84. How to make operations wait for another to complete](/tips/084_operation_dependency/script.md)

[85. How to make a network request wait for an internet connection](/tips/085_waitsForConnectivity/script.md)

[86. How to check whether a module is available](/tips/086_can_import/script.md)

[87. How to convert a multidimensional array to a single-dimensional array](/tips/087_joined/script.md)

[88. How to compare dates](/tips/088_dates/script.md)

[89. Unowned Reference](/tips/089_unowned_reference/script.md)

[90. What does Weak reference mean?](/tips/090_weak_reference/script.md)

[91. What does Strong reference mean?](/tips/091_strong_reference/script.md)

[92. Weak vs Unowned](/tips/092_weak_vs_unowned/script.md)

[93. Automatic Reference Counting](/tips/093_arc/script.md)

[94. Open vs Public](/tips/094_open_vs_public/script.md)

[95. Swizzling](/tips/095_swizzling/script.md)

[96. How to use Stack in Swift](/tips/096_stack/script.md)

[97. How to implement a Queue in Swift](/tips/097_queue/script.md)

[98. How to implement LinkedList in Swift](/tips/098_linkedlist/script.md)

[99. Singleton in Swift](/tips/099_singleton/script.md)

[100. Zombie in Swift](/tips/100_nszombie/script.md)

[101. How to use try-catch in Swift](/tips/101_try_catch/script.md)

[102. How to use Generics in Swift](/tips/102_generics/script.md)

[103. Implementing Tree Data Structure in Swift](/tips/103_tree/script.md)

[104. How to implement Graph in Swift](/tips/104_graph/script.md)

[105. How to use Proxy pattern in Swift](/tips/105_proxy/script.md)

[106. How to use Facade design pattern in Swift](/tips/106_facade/script.md)

[107. How to use Adapter pattern in Swift](/tips/107_adapter/script.md)

[108. How to use Decorator pattern in Swift](/tips/108_decorator/script.md)

[109. Bit manipulation](/tips/109_bit_manipulation/script.md)

[110. Binary tree](/tips/110_b_tree/script.md)

[111. How to implement Observer pattern in Swift](/tips/111_observer/script.md)

[112. How to shuffle an array in Swift](/tips/112_array_shuffle/script.md)

[113. How to use associated type in Swift](/tips/113_associatedtype/script.md)

[114. RunLoop for Precise Timing in Swift](/tips/114_runloop/script.md)

[115. Subscriber method for receiving and handling data](/tips/115_sink/script.md)

[116. How to use Sendable protocol in Swift](/tips/116_sendable/script.md)

[117. How to use Builder pattern in Swift](/tips/117_builder/script.md)

[118. How to use Prototype pattern in Swift](/tips/118_prototype/script.md)

[119. Tracking Download Progress in URLSession](/tips/119_tracking_the_progress/script.md)