Loadingâ€Ļ

Objective-C āĻĢāĻ°ā§āĻŽā§āϝāĻžāϟāĻžāϰ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ Objective-C āϕ⧋āĻĄ āĻĢāĻ°ā§āĻŽā§āϝāĻžāϟāĻžāϰ

āĻāĻ–āύāĻ“ iOS āĻŦāĻž macOS-āĻāϰ āϜāĻ¨ā§āϝ Objective-C āϕ⧋āĻĄāĻŦ⧇āϏ⧇ āĻ•āĻžāϜ āĻ•āϰāϛ⧇āύ? āĻāχ āĻĢāĻ°ā§āĻŽā§āϝāĻžāϟāĻžāϰ āφāĻĒāύāĻžāϰ āϕ⧋āĻĄ āĻāĻ•āϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ clang-format āĻĻāĻŋāϝāĻŧ⧇ āϚāĻžāϞāĻžāϝāĻŧ āĻāĻŦāĻ‚ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ, āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻŦā§āϰ⧇āϏ āϏāĻš āĻĒāĻžāϞāĻŋāĻļāĻĄ .m / .mm āφāωāϟāĻĒ⧁āϟ āĻĻ⧇āϝāĻŧāĨ¤ āϞāĻŋāϗ⧇āϏāĻŋ āĻĢāĻžāχāϞ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰāĻž, āĻĄāĻŋāĻĢ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻ•āϰāĻž āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āϞ⧋āĻ•āĻžāϞ āϟ⧁āϞāĻšā§‡āχāύ āĻ¸ā§āĻĒāĻ°ā§āĻļ āύāĻž āĻ•āϰ⧇āχ āϟāĻŋāĻŽ-āĻ“āϝāĻŧāĻžāχāĻĄ āĻ¸ā§āϟāĻžāχāϞ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĻāĻ°ā§āĻļāĨ¤

āĻŽā§‚āϞ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāĻžāĻŦāϞ⧀

  • āĻāĻ• āĻ•ā§āϞāĻŋāϕ⧇ Objective-C āĻāĻŦāĻ‚ Objective-C++ āϏ⧋āĻ°ā§āϏ āĻĢāĻžāχāϞ (`.m`, `.mm`) āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰ⧁āύ
  • LLVM-āĻāϰ clang-format āĻĻā§āĻŦāĻžāϰāĻž āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ, āĻĒā§‚āĻ°ā§āĻŦāĻžāĻ­āĻžāϏāϝ⧋āĻ—ā§āϝ āĻāĻŦāĻ‚ āĻļāĻŋāĻ˛ā§āĻĒ-āĻŽāĻžāύ⧇āϰ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚
  • āĻ…āĻĒāĻžāϰ⧇āϟāϰ, āĻŽā§‡āĻĨāĻĄ āϏāĻŋāĻ—āύ⧇āϚāĻžāϰ āĻāĻŦāĻ‚ āĻŽā§‡āϏ⧇āϜ āϏ⧇āĻ¨ā§āĻĄā§‡āϰ āϚāĻžāϰāĻĒāĻžāĻļ⧇āϰ āĻ¸ā§āĻĒ⧇āϏ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻ•āϰ⧇
  • āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ, āχāĻŽāĻĒā§āϞāĻŋāĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻāĻŦāĻ‚ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ-āĻĢā§āϞ⧋āϰ āϜāĻ¨ā§āϝ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻŦā§āϰ⧇āϏ āĻ¸ā§āϟāĻžāχāϞ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇
  • āφāϰāĻ“ āĻĒāĻžāĻ āϝ⧋āĻ—ā§āϝ āĻšā§‡āĻĄāĻžāϰ āĻāĻŦāĻ‚ āϏ⧋āĻ°ā§āϏ⧇āϰ āϜāĻ¨ā§āϝ āχāĻŽā§āĻĒā§‹āĻ°ā§āϟ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻāĻŦāĻ‚ āĻ—ā§āϰ⧁āĻĒ āĻ•āϰāĻž āϰāĻžāϖ⧇
  • āϞāĻŋāϗ⧇āϏāĻŋ Objective-C āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ, āĻŽāĻŋāĻļā§āϰ Swift/ObjC āĻ…ā§āϝāĻžāĻĒ āĻāĻŦāĻ‚ āĻĻā§āϰ⧁āϤ āĻĒā§āϰāĻŋ-PR āĻ•ā§āϞāĻŋāύāφāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ
  • UI āϰ⧇āϏāĻĒāĻ¨ā§āϏāĻŋāĻ­ āϰāĻžāĻ–āϤ⧇ āϟāĻžāχāĻŽāφāωāϟ āĻāĻŦāĻ‚ āϏāĻžāχāϜ āϞāĻŋāĻŽāĻŋāϟ āϏāĻš āϏāĻžāĻ°ā§āĻ­āĻžāϰ-āĻŦā§āϝāĻžāĻ•āĻĄ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻļāύ

đŸ› ī¸ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ Objective-C āϕ⧋āĻĄ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰāĻŦ⧇āύ for objectivec-formatter

1

ā§§. āφāĻĒāύāĻžāϰ āϕ⧋āĻĄ āĻĒ⧇āĻ¸ā§āϟ āĻŦāĻž āφāĻĒāϞ⧋āĻĄ āĻ•āϰ⧁āύ

āφāĻĒāύāĻžāϰ Objective-C / Objective-C++ āϏ⧋āĻ°ā§āϏ āĻāĻĄāĻŋāϟāϰ⧇ āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰ⧁āύ āĻ…āĻĨāĻŦāĻž āĻāĻ•āϟāĻŋ `.m` / `.mm` āĻĢāĻžāχāϞ āĻĄā§āĻ°ā§āϝāĻžāĻ—-āĻāĻ¨ā§āĻĄ-āĻĄā§āϰāĻĒ āĻ•āϰ⧁āύāĨ¤ āĻĻā§āϰ⧁āϤ āĻ•ā§āϞāĻŋāύāφāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻŋ āĻšā§‡āĻĄāĻžāϰ āĻ¸ā§āύāĻŋāĻĒ⧇āϟāĻ“ āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

2

⧍. āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āϚāĻžāϞāĻžāύ

**āĻĢāϰāĻŽā§āϝāĻžāϟ** āĻŦāĻžāϟāύ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤ āφāĻĒāύāĻžāϰ āϕ⧋āĻĄ āĻāĻ•āϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ āĻĒāĻžāĻ āĻžāύ⧋ āĻšāϝāĻŧ āϝ⧇āĻ–āĻžāύ⧇ clang-format āĻāĻ•āϟāĻŋ Objective-C āĻ¸ā§āϟāĻžāχāϞ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āύāĻŋāϝāĻŧ⧇ āϚāϞ⧇āĨ¤ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰāĻž āĻĢāϞāĻžāĻĢāϞ āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤

3

ā§Š. āĻĒāĻ°ā§āϝāĻžāϞ⧋āϚāύāĻž, āĻ•āĻĒāĻŋ āĻāĻŦāĻ‚ āĻ•āĻŽāĻŋāϟ āĻ•āϰ⧁āύ

āφāωāϟāĻĒ⧁āϟ āĻĒāϰāĻŋāĻĻāĻ°ā§āĻļāύ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āĻāϟāĻŋāϕ⧇ Xcode āĻŦāĻž āφāĻĒāύāĻžāϰ āĻāĻĄāĻŋāϟāϰ⧇ āĻĢāĻŋāϰ⧇ āĻ•āĻĒāĻŋ āĻ•āϰ⧁āύāĨ¤ āφāĻĒāύāĻžāϰ āĻĄāĻŋāĻĢāϗ⧁āϞ⧋ āĻšā§‹āϝāĻŧāĻžāχāϟāĻ¸ā§āĻĒ⧇āϏ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϞāϜāĻŋāϕ⧇āϰ āωāĻĒāϰ āĻĢā§‹āĻ•āĻžāϏ āϰāĻžāĻ–āϤ⧇ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻĢāĻžāχāϞ āĻ•āĻŽāĻŋāϟ āĻ•āϰ⧁āύāĨ¤

āĻĒā§āϰāϝ⧁āĻ•ā§āϤāĻŋāĻ—āϤ āĻŦāĻŋāĻŦāϰāĻŖ

āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āχāύāĻĒ⧁āϟ

āĻĻ⧈āύāĻ¨ā§āĻĻāĻŋāύ Objective-C / Objective-C++ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āϤ⧈āϰāĻŋāĨ¤

āϧāϰāύāωāĻĻāĻžāĻšāϰāĻŖāύ⧋āϟ
.m āϏ⧋āĻ°ā§āϏ āĻĢāĻžāχāϞāĻ­āĻŋāω āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ, āĻŽāĻĄā§‡āϞ, āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰāφāĻĒāϞ⧋āĻĄ āĻāĻŦāĻ‚ āĻĒ⧇āĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤāĨ¤
.mm Objective-C++ āĻĢāĻžāχāϞC++ āĻāĻŦāĻ‚ Cocoa API āĻŦā§āϰāĻŋāϜāĻŋāĻ‚clang-format-āĻāϰ Objective-C++ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤
āĻšā§‡āĻĄāĻžāϰ āĻ¸ā§āύāĻŋāĻĒ⧇āϟ@interface āĻŦā§āϞāĻ•, āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ, āĻ•ā§āϝāĻžāϟāĻžāĻ—āϰāĻŋāĻ•ā§āϞāĻŋāύāφāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻšā§‡āĻĄāĻžāϰ āϕ⧋āĻĄ āϏāϰāĻžāϏāϰāĻŋ āĻāĻĄāĻŋāϟāϰ⧇ āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰ⧁āύ (āĻĢāĻžāχāϞ āφāĻĒāϞ⧋āĻĄ `.m` / `.mm` āφāĻļāĻž āĻ•āϰ⧇)āĨ¤

āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āχāĻžā§āϜāĻŋāύ

āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āĻāĻ•āϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ clang-format-āĻ āĻĄā§‡āϞāĻŋāϗ⧇āϟ āĻ•āϰ⧇āĨ¤

āĻĻāĻŋāĻ•āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ
āχāĻžā§āϜāĻŋāύLLVM clang-format (Objective-C / Objective-C++)
āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻļāύ āĻŽāĻĄā§‡āϞāĻāĻ•āϟāĻŋ āĻĄā§‡āĻĄāĻŋāϕ⧇āĻŸā§‡āĻĄ `/api/objectivec-formatter` āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϏāĻžāĻ°ā§āĻ­āĻžāϰ-āĻŦā§āϝāĻžāĻ•āĻĄ
āϟāĻžāχāĻŽāφāωāϟāĻĒā§āϰāϤāĻŋ āĻ…āύ⧁āϰ⧋āϧ⧇ ~25 āϏ⧇āϕ⧇āĻ¨ā§āĻĄ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āϟāĻžāχāĻŽāφāωāϟ
āϰāĻŋāĻĢāϰāĻŽā§āϝāĻžāϟ āĻ¸ā§āϕ⧋āĻĒāĻšā§‹āϝāĻŧāĻžāχāϟāĻ¸ā§āĻĒ⧇āϏ, āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ, āĻŦā§āϰ⧇āϏ⧇āϏ, āĻ•āĻŋāϛ⧁ āχāĻŽā§āĻĒā§‹āĻ°ā§āϟ āϞ⧇āφāωāϟ
āϏ⧇āĻŽāĻžāĻ¨ā§āϟāĻŋāĻ•ā§āϏāϕ⧋āĻĄā§‡āϰ āφāϚāϰāĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāϝāĻŧ āύāĻžâ€”āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϞ⧇āφāωāϟ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āĻ•āϰāĻž āĻšāϝāĻŧ
āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āĻŦāĻž āĻŽāĻžāϞāĻŋāĻ•āĻžāύāĻžāϧ⧀āύ āϕ⧋āĻĄāĻŦ⧇āϏ⧇āϰ āϜāĻ¨ā§āϝ, āϝ⧇āϕ⧋āύ⧋ āĻ…āύāϞāĻžāχāύ āϟ⧁āϞ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āφāĻĒāύāĻžāϰ āϏāĻŋāφāχ-āϤ⧇ āĻŦāĻž āφāĻĒāύāĻžāϰ āύāĻŋāĻœā§‡āϰ āĻŽā§‡āĻļāĻŋāύ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ clang-format āϚāĻžāϞāĻžāύ⧋ āĻĒāĻ›āĻ¨ā§āĻĻāύ⧀āϝāĻŧāĨ¤

āĻ¸ā§āϟāĻžāχāϞ āĻ“ āϞ⧇āφāωāϟ

āϕ⧋āĻĄ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ clang-format āĻ¸ā§āϟāĻžāχāϞ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒā§āϰāĻŋāĻ¨ā§āϟ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

āĻŦāĻŋāĻ­āĻžāĻ—āϕ⧀ āύāϰāĻŽāĻžāϞāĻžāχāϜāĻĄ āĻšāϝāĻŧ?āĻāϟāĻŋ āϕ⧇āύ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ
āĻŽā§‡āĻĨāĻĄ āϏāĻŋāĻ—āύ⧇āϚāĻžāϰ`-` āĻāϰ āϚāĻžāϰāĻĒāĻžāĻļ⧇āϰ āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚, āϰāĻŋāϟāĻžāĻ°ā§āύ āϟāĻžāχāĻĒ, āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻāĻŦāĻ‚ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāĻšā§‡āĻĄāĻžāϰ āĻāĻŦāĻ‚ āχāĻŽāĻĒā§āϞāĻŋāĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ⧇ āĻŽā§‡āĻĨāĻĄ āĻĄāĻŋāĻ•ā§āϞāĻžāϰ⧇āĻļāύ āĻ¸ā§āĻ•ā§āϝāĻžāύ āĻ•āϰāĻž āϏāĻšāϜ āĻ•āϰ⧇ āϤ⧋āϞ⧇āĨ¤
āĻŽā§‡āϏ⧇āϜ āϏ⧇āĻ¨ā§āĻĄāĻ•āĻŽāĻžāϰ āĻĒāϰ⧇ āĻ¸ā§āĻĒ⧇āϏ, āϕ⧋āϞāύ⧇āϰ āϚāĻžāϰāĻĒāĻžāĻļ⧇ āĻāĻŦāĻ‚ āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ āĻ•āϞāϗ⧁āϞāĻŋāϤ⧇āĻ—āĻ­ā§€āϰāĻ­āĻžāĻŦ⧇ āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ `-[obj doSomething:withOption:]` āĻ•āϞāϗ⧁āϞāĻŋāϰ āĻĒāĻžāĻ āϝ⧋āĻ—ā§āϝāϤāĻž āωāĻ¨ā§āύāϤ āĻ•āϰ⧇āĨ¤
āĻŦā§āϰ⧇āϏ āĻ“ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ-āĻĢā§āϞ⧋`@interface`, `@implementation`, `if`, `for`, `while` āĻāϰ āϜāĻ¨ā§āϝ āĻŦā§āϰ⧇āϏ āĻĒā§āϞ⧇āϏāĻŽā§‡āĻ¨ā§āϟāĻĢāĻžāχāϞ āĻāĻŦāĻ‚ āĻ…āĻŦāĻĻāĻžāύāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻ¸ā§āϟāĻžāχāϞ āĻĄā§āϰāĻŋāĻĢā§āϟ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰ⧇āĨ¤
āχāĻŽā§āĻĒā§‹āĻ°ā§āϟ`#import` āĻāĻŦāĻ‚ `#include` āĻāϰ āϜāĻ¨ā§āϝ āĻ—ā§āϰ⧁āĻĒāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚āĻĢāĻžāχāϞ⧇āϰ āĻļā§€āĻ°ā§āώ āĻŦāĻŋāĻ­āĻžāĻ—āϗ⧁āϞāĻŋ āĻĒāϰāĻŋāĻĒāĻžāϟāĻŋ āϰāĻžāϖ⧇ āĻāĻŦāĻ‚ āĻŽāĻžāĻ°ā§āϜ āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟ āĻšā§āϰāĻžāϏ āĻ•āϰ⧇āĨ¤
āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻ“ āĻ…ā§āϝāĻžāϞāĻžāχāύāĻŽā§‡āĻ¨ā§āϟāĻŦā§āϞāĻ•, āϏ⧁āχāϚ āĻāĻŦāĻ‚ āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ āĻ¸ā§āϕ⧋āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻ­āĻŋāĻ¨ā§āύ āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύāĻĻā§āϰ⧁āϤ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞ āĻāĻĄāĻŋāϟ āĻĨ⧇āϕ⧇ āϭ⧁āϞ āĻ…ā§āϝāĻžāϞāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ āĻĻā§‚āϰ āĻ•āϰ⧇āĨ¤

āϏ⧀āĻŽāĻž āĻ“ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ

āφāĻĒāύāĻžāϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻĢā§āϰāĻŋāϜ āύāĻž āĻ•āϰ⧇ āĻŦāĻžāĻ¸ā§āϤāĻŦ-āĻŦāĻŋāĻļā§āĻŦ⧇āϰ Objective-C āĻ…ā§āϝāĻžāĻĒ āĻāĻŦāĻ‚ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āϜāĻ¨ā§āϝ āφāĻ•āĻžāϰāϝ⧁āĻ•ā§āϤāĨ¤

āχāύāĻĒ⧁āϟ āϟāĻžāχāĻĒāφāύ⧁āĻŽāĻžāύāĻŋāĻ• āϏ⧀āĻŽāĻžāύ⧋āϟ
āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰāĻž āϏ⧋āĻ°ā§āϏ~2 MB āĻŸā§‡āĻ•ā§āϏāϟāĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ āĻĒāĻžāĻ āĻžāύ⧋āϰ āφāϗ⧇ āĻ•āĻ ā§‹āϰ āϏ⧀āĻŽāĻž āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤
āφāĻĒāϞ⧋āĻĄ āĻ•āϰāĻž āĻĢāĻžāχāϞ~ā§Ģ āĻŽā§‡āĻ—āĻžāĻŦāĻžāχāϟāϟ⧁āϞ⧇āϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž `maxFileSizeBytes` āĻĻā§āĻŦāĻžāϰāĻž āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāĨ¤
āϏāĻžāϧāĻžāϰāĻŖ āĻŦāĻŋāϞāĻŽā§āĻŦ< ā§§-⧍ āϏ⧇āϕ⧇āĻ¨ā§āĻĄāĻĢāĻžāχāϞ⧇āϰ āφāĻ•āĻžāϰ, āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻŦāĻŋāϞāĻŽā§āĻŦ āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϞ⧋āĻĄā§‡āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇āĨ¤
āĻŦā§āϝāĻ°ā§āĻĨāϤāĻžāϰ āϧāϰāύāϟāĻžāχāĻŽāφāωāϟ / āĻ¤ā§āϰ⧁āϟāĻŋ āĻŦāĻžāĻ°ā§āϤāĻžUI āĻā§āϞāĻŋāϝāĻŧ⧇ āύāĻž āϰ⧇āϖ⧇ āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰāĻ­āĻžāĻŦ⧇ āĻĻ⧇āĻ–āĻžāύ⧋ āĻšāϝāĻŧāĨ¤

āĻ—ā§‹āĻĒāύ⧀āϝāĻŧāϤāĻž āĻŽāĻĄā§‡āϞ

āϏāĻžāĻ°ā§āĻ­āĻžāϰ-āĻŦā§āϝāĻžāĻ•āĻĄ, āĻ•ā§āώāĻŖāĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāĻŖ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝāĨ¤

āĻĻāĻŋāĻ•āφāϚāϰāĻŖ
āĻĒāϰāĻŋāĻŦāĻšāύāϕ⧋āĻĄ HTTPS āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻāĻ•āϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤
āϏāĻ‚āϰāĻ•ā§āώāĻŖāĻ•ā§āώāĻŖāĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻšāĻŋāϏāĻžāĻŦ⧇ āωāĻĻā§āĻĻ⧇āĻļā§āϝ: āχāύāĻĒ⧁āϟ āĻŽā§‡āĻŽāϰāĻŋāϤ⧇ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻĻā§€āĻ°ā§āϘāĻŽā§‡āϝāĻŧāĻžāĻĻā§€ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤
āĻ—ā§‹āĻĒāύ āϤāĻĨā§āϝāφāĻĒāύāĻžāϰ āωāϚāĻŋāϤ API āϕ⧀, āĻŸā§‹āϕ⧇āύ, āĻŦāĻž āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āĻ•ā§āϰ⧇āĻĄā§‡āύāĻļāĻŋāϝāĻŧāĻžāϞ āϝ⧇āϕ⧋āύ⧋ āĻ…āύāϞāĻžāχāύ āϟ⧁āϞ⧇ āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰāĻž āĻāĻĄāĻŧāĻžāύ⧋āĨ¤
āϏ⧇āϰāĻž āĻ…āύ⧁āĻļā§€āϞāύāĻ…-āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āĻĢāĻžāχāϞ āĻāĻŦāĻ‚ āĻĻā§āϰ⧁āϤ āĻ•ā§āϞāĻŋāύāφāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻāχ āϟ⧁āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ; CI āĻāĻŦāĻ‚ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āφāĻĒāύāĻžāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹āϰ āĻŽāĻ§ā§āϝ⧇ āϰāĻžāϖ⧁āύāĨ¤

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ-āϞāĻžāχāύ clang-format āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāĻŋāĻ­-āϏāĻŋ āĻāϰ āϜāĻ¨ā§āϝ

āĻĻ⧈āύāĻ¨ā§āĻĻāĻŋāύ āωāĻ¨ā§āύāϝāĻŧāύ āĻāĻŦāĻ‚ CI āĻāϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻžāϰ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āϟ⧁āϞāĻšā§‡āχāύ⧇ clang-format āĻšāϞ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāĻŋāĻ­-āϏāĻŋ āϕ⧋āĻĄ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āϰāĻžāĻ–āĻžāϰ āĻ•ā§āϝāĻžāύ⧋āύāĻŋāĻ•āĻžāϞ āωāĻĒāĻžāϝāĻŧāĨ¤

macOS / 🐧 Linux

āĻāĻ•āϟāĻŋ `.m` āĻĢāĻžāχāϞ āϏ⧇āĻ–āĻžāύ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰ⧁āύ

clang-format -i MyViewController.m

āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻ¸ā§āϟāĻžāχāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĄāĻŋāĻ¸ā§āϕ⧇ āĻĢāĻžāχāϞāϟāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϞāĻŋāϖ⧇ (āϝ⧇āĻŽāύ, `.clang-format` āĻĨ⧇āϕ⧇)āĨ¤

āĻĢāĻžāχāϞ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āύāĻž āĻ•āϰ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰāĻž āφāωāϟāĻĒ⧁āϟ āĻĒā§āϰāĻŋāĻ­āĻŋāω āĻ•āϰ⧁āύ

clang-format MyViewController.m

āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰāĻž āϕ⧋āĻĄ stdout āĻ āĻĒā§āϰāĻŋāĻ¨ā§āϟ āĻ•āϰ⧇ āϝāĻžāϤ⧇ āφāĻĒāύāĻŋ āĻĒā§āϰāĻĨāĻŽā§‡ diff āĻĒāĻ°ā§āϝāĻžāϞ⧋āϚāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϏāĻŽāĻ¸ā§āϤ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāĻŋāĻ­-āϏāĻŋ āϏ⧋āĻ°ā§āϏ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰ⧁āύ

find . -name "*.m" -o -name "*.mm" | xargs clang-format -i

āφāĻĒāύāĻžāϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāĻŋāĻ­-āϏāĻŋ / āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāĻŋāĻ­-āϏāĻŋ++ āϕ⧋āĻĄāĻŦ⧇āϏ āϜ⧁āĻĄāĻŧ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇āĨ¤

Windows

āĻāĻ•āϟāĻŋ āĻšā§‡āĻĄāĻžāϰ āĻŦāĻž āχāĻŽāĻĒā§āϞāĻŋāĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻĢāĻžāχāϞ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰ⧁āύ

clang-format.exe -i MyClass.h

āφāĻĒāύāĻžāϰ āύāĻŋāĻ°ā§āĻŦāĻžāϚāĻŋāϤ clang-format āĻ¸ā§āϟāĻžāχāϞ āĻĻāĻŋāϝāĻŧ⧇ āĻšā§‡āĻĄāĻžāϰāϟāĻŋ āϏ⧇āĻ–āĻžāύ⧇ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧇āĨ¤

āĻāĻ•āϟāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āĻŸā§‡āϰ āĻ…āĻ‚āĻļ āĻšāĻŋāϏāĻžāĻŦ⧇ āϚāĻžāϞāĻžāύ

forfiles /S /M *.m /C "cmd /c clang-format.exe -i @file"

āĻāĻ•āϟāĻŋ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋāϤ⧇ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāĻŋāĻ­-āϏāĻŋ āϏ⧋āĻ°ā§āϏ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻšāϜ āĻŦā§āϝāĻžāϚ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚āĨ¤

āφāĻĒāύāĻžāϰ āĻĻāϞ⧇āϰ āĻ¸ā§āϟāĻžāχāϞāϟāĻŋ āϰāĻŋāĻĒā§‹āϰ āϰ⧁āĻŸā§‡ āĻāĻ•āϟāĻŋ `.clang-format` āĻĢāĻžāχāϞ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āĻĻā§āϰ⧁āϤ āĻāĻ•āĻ•āĻžāϞ⧀āύ āϏāĻ‚āĻļā§‹āϧāύ⧇āϰ āϜāĻ¨ā§āϝ āĻāχ āĻ“āϝāĻŧ⧇āĻŦ āϟ⧁āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ, āϰāĻŋāĻĒā§‹-āĻŦā§āϝāĻžāĻĒā§€ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ⧇āϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ clang-format āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤

āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ

iOS / macOS āĻ…ā§āϝāĻžāĻĒ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ

āύāϤ⧁āύ Swift āĻŽāĻĄāĻŋāωāϞāϗ⧁āϞāĻŋāϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻĻā§€āĻ°ā§āϘāĻ¸ā§āĻĨāĻžāϝāĻŧā§€ Objective-C āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϗ⧁āϞāĻŋ āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāĻŖāϝ⧋āĻ—ā§āϝ āϰāĻžāϖ⧁āύāĨ¤

  • āĻŦāĻĄāĻŧ āϰāĻŋāĻĢā§āϝāĻžāĻ•ā§āϟāϰ⧇āϰ āφāϗ⧇ āϞāĻŋāϗ⧇āϏāĻŋ āĻ­āĻŋāω āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ āĻāĻŦāĻ‚ āĻŽāĻĄā§‡āϞ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰ⧁āύāĨ¤
  • āϏāĻŋāύāĻŋāϝāĻŧāϰ āĻāĻŦāĻ‚ āϜ⧁āύāĻŋāϝāĻŧāϰ Objective-C āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāĻĻ⧇āϰ āĻŽāĻŋāĻļā§āϰ āĻĻāϞ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻ¸ā§āϟāĻžāχāϞ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧁āύāĨ¤
  • āĻĒ⧁āϞ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āĻŸā§‡ āĻļā§‹āϰāĻ—ā§‹āϞāĻĒā§‚āĻ°ā§āĻŖ āĻĄāĻŋāĻĢ āĻ•āĻŽāĻžāϤ⧇ āĻ•āĻŽāĻŋāĻŸā§‡āϰ āφāϗ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āϚāĻžāϞāĻžāύāĨ¤
@interface MyViewController : UIViewController
@property(nonatomic, strong) NSString *titleText;
@end

@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];NSLog(@"Loaded: %@",_titleText);}
@end

āϕ⧋āĻĄ āϰāĻŋāĻ­āĻŋāω āĻ“ āĻĒ⧁āϞ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĻŋ

āϰāĻŋāĻ­āĻŋāω āφāϞ⧋āϚāύāĻžāϕ⧇ āϝ⧁āĻ•ā§āϤāĻŋāϤ⧇ āϕ⧇āĻ¨ā§āĻĻā§āϰ⧀āĻ­ā§‚āϤ āϰāĻžāĻ–āϤ⧇ āĻĒā§āϰāĻŋ-āĻĢā§āϞāĻžāχāϟ āϧāĻžāĻĒ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤

  • PR āĻ–ā§‹āϞāĻžāϰ āφāϗ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϤ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āĻšā§‹āϝāĻŧāĻžāχāϟāĻ¸ā§āĻĒ⧇āϏ āĻļā§‹āϰāĻ—ā§‹āϞ āĻĻā§‚āϰ āĻ•āϰ⧁āύāĨ¤
  • āĻŦā§āϰ⧇āϏ āĻ¸ā§āϟāĻžāχāϞ āĻāĻŦāĻ‚ āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻ•āϰ⧇ āĻĄāĻŋāĻĢāϗ⧁āϞāĻŋ āϛ⧋āϟ āĻāĻŦāĻ‚ āĻĒāĻ°ā§āϝāĻžāϞ⧋āϚāύāĻž āĻ•āϰāϤ⧇ āϏāĻšāϜ āĻ•āϰ⧁āύāĨ¤
  • āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• clang-format āĻĒā§āϰ⧋āĻĢāĻžāχāϞ⧇āϰ āĻ•āĻžāϛ⧇ āĻ…āĻ°ā§āĻĒāĻŖ āĻ•āϰ⧇ āĻ¸ā§āϟāĻžāχāϞ āĻŦāĻŋāϤāĻ°ā§āĻ• āĻšā§āϰāĻžāϏ āĻ•āϰ⧁āύāĨ¤
// āϰāĻŋāĻ­āĻŋāωāϰ āφāϗ⧇: āĻ…āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚
if(showAlert){[self showAlertWithMessage:message];}

// āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āĻĒāϰ⧇
if (showAlert) {
  [self showAlertWithMessage:message];
}

❓ Frequently Asked Questions

đŸ› ī¸āĻšā§āĻĄā§‡āϰ āύāĻŋāĻšā§‡ āϕ⧋āύ āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āχāĻžā§āϜāĻŋāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ?

āϟ⧁āϞāϟāĻŋ LLVM-āĻāϰ `clang-format` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϝāĻž C, C++, Objective-C, Objective-C++ āĻāĻŦāĻ‚ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻ­āĻžāώāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰāĨ¤ āφāĻĒāύāĻžāϰ āϕ⧋āĻĄ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ Objective-C āĻ¸ā§āϟāĻžāχāϞ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻĒāĻžāĻ°ā§āϏ āĻāĻŦāĻ‚ āĻĒ⧁āύāĻ°ā§āĻŽā§āĻĻā§āϰāĻŋāϤ āĻšāϝāĻŧāĨ¤

📄āϕ⧋āύ āĻĢāĻžāχāϞ āϟāĻžāχāĻĒ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ?

āφāĻĒāϞ⧋āĻĄāĻžāϰāϟāĻŋ `.m` āĻāĻŦāĻ‚ `.mm` āχāĻŽāĻĒā§āϞāĻŋāĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻĢāĻžāχāϞ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāϜ āĻ•āϰāĻžāĨ¤ āφāĻĒāύāĻŋ āĻāĻ–āύāĻ“ āĻšā§‡āĻĄāĻžāϰ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ (`.h`) āϏāϰāĻžāϏāϰāĻŋ āĻāĻĄāĻŋāϟāϰ⧇ āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰ⧇ āϏ⧇āϗ⧁āϞāĻŋ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϤāĻŦ⧇ āĻĢāĻžāχāϞ āφāĻĒāϞ⧋āĻĄ āĻŦāĻ°ā§āϤāĻŽāĻžāύ⧇ `.m` / `.mm` āĻāϰ āωāĻĒāϰ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻžāĨ¤

📏āφāĻŽāĻŋ āĻ•āĻŋ UI āĻĨ⧇āϕ⧇ āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻŦāĻž āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āϞāĻžāχāύ āĻĒā§āϰāĻ¸ā§āĻĨ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ?

āĻ“āϝāĻŧ⧇āĻŦ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŦāύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ Objective-C āĻ¸ā§āϟāĻžāχāϞ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āϏāĻš clang-format āϚāĻžāϞāĻžāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ `IndentWidth` āĻŦāĻž `ColumnLimit` āĻāϰ āĻŽāϤ⧋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋāϰ āωāĻĒāϰ āϏ⧂āĻ•ā§āĻˇā§āĻŽ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāϪ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ, āĻāĻ•āϟāĻŋ `.clang-format` āĻĢāĻžāχāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āĻŦāĻž CI-āϤ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ clang-format āϚāĻžāϞāĻžāύāĨ¤

🔐āφāĻŽāĻžāϰ āϏ⧋āĻ°ā§āϏ āϕ⧋āĻĄ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻŦāĻž āϞāĻ— āĻ•āϰāĻž āĻšāϝāĻŧ āĻ•āĻŋ?

āϕ⧋āĻĄ HTTPS-āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻāĻ•āϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻ…āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āχāύāĻĒ⧁āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāϟāĻŋ āĻĻā§€āĻ°ā§āϘāĻŽā§‡āϝāĻŧāĻžāĻĻā§€ āϏāĻ‚āϰāĻ•ā§āώāϪ⧇āϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝ⧇ āύāϝāĻŧāĨ¤ āϤāĻŦ⧁āĻ“, āĻāĻ•āϟāĻŋ āϏ⧇āϰāĻž āĻ…āύ⧁āĻļā§€āϞāύ āĻšāĻŋāϏāĻžāĻŦ⧇, āϝ⧇āϕ⧋āύ⧋ āĻ…āύāϞāĻžāχāύ āϟ⧁āϞ⧇ āĻ—ā§‹āĻĒāύ⧀āϝāĻŧāϤāĻž, āĻ•ā§āϰ⧇āĻĄā§‡āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻŦāĻž āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āĻŦā§āϝāĻŦāϏāĻžāϝāĻŧāĻŋāĻ• āϝ⧁āĻ•ā§āϤāĻŋ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϚāϞ⧁āύāĨ¤

âš ī¸āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻ•āĻŋ āĻ•āĻ–āύāĻ“ āφāĻŽāĻžāϰ āϕ⧋āĻĄā§‡āϰ āφāϚāϰāĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇?

clang-format āĻšā§‹āϝāĻŧāĻžāχāϟāĻ¸ā§āĻĒ⧇āϏ āĻāĻŦāĻ‚ āϞ⧇āφāωāĻŸā§‡āϰ āωāĻĒāϰ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āωāϚāĻŋāϤ āύāϝāĻŧāĨ¤ āϤāĻŦ⧇, āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āϕ⧋āĻĄ āĻ…āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻŽā§āϝāĻžāĻ•ā§āϰ⧋ āĻ•ā§ŒāĻļāϞ āĻŦāĻž āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚-āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āϟ⧁āϞāĻŋāĻ‚-āĻāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇, āϏāĻ°ā§āĻŦāĻĻāĻž āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āĻļāĻžāĻ–āĻž āĻŦāĻž āĻŦā§āϝāĻžāĻ•āφāĻĒ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āϚāĻžāϞāĻžāύ āĻāĻŦāĻ‚ āφāϚāϰāĻŖ āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āϰāϝāĻŧ⧇āϛ⧇ āϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧁āύāĨ¤

🚀āφāĻŽāĻŋ āĻ•āĻ–āύ āĻāχ āĻ“āϝāĻŧ⧇āĻŦ āϟ⧁āϞ āĻŦāύāĻžāĻŽ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ clang-format āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ?

āĻĻā§āϰ⧁āϤ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰāĻ•āϰāĻŖ, āĻāĻ•āĻ•āĻžāϞ⧀āύ āĻĢāĻžāχāϞ, āĻŦāĻž āϝāĻ–āύ āφāĻĒāύāĻŋ clang-format āχāύāĻ¸ā§āϟāϞ āύ⧇āχ āĻāĻŽāύ āĻŽā§‡āĻļāĻŋāύ⧇ āφāϛ⧇āύ āϤāĻ–āύ āĻāχ āĻ“āϝāĻŧ⧇āĻŦ āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ, āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋ āĻāĻŦāĻ‚ āĻ¸ā§āϟāĻžāχāϞ āĻĒā§āϰāϝāĻŧā§‹āϗ⧇āϰ āϜāĻ¨ā§āϝ, āĻāĻ•āϟāĻŋ āĻļ⧇āϝāĻŧāĻžāĻ°ā§āĻĄ `.clang-format` āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āϏāĻš āφāĻĒāύāĻžāϰ āĻāĻĄāĻŋāϟāϰ āĻāĻŦāĻ‚ CI-āϤ⧇ clang-format āϰāĻžāϖ⧁āύāĨ¤

Pro Tips

Best Practice

āĻŦā§āϰ⧇āϏ āĻĒā§āϞ⧇āϏāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āφāϚāϰāϪ⧇ āĻĢā§‹āĻ•āĻžāϏ āϰāĻžāĻ–āϤ⧇ āĻ•āĻŽāĻŋāϟ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āϚāĻžāϞāĻžāύāĨ¤

Best Practice

āφāĻĒāύāĻžāϰ āϏāĻŋāφāχ-āϤ⧇ (āĻŦāĻž āĻĒā§āϰāĻŋ-āĻ•āĻŽāĻŋāϟ āĻšā§āĻ•) āĻāĻ•āϟāĻŋ `clang-format` āϧāĻžāĻĒ āϝ⧋āĻ— āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āĻ¸ā§āϟāĻžāχāϞ āχāĻ¸ā§āϝ⧁āϗ⧁āϞāĻŋ āĻ•āĻ–āύāχ āϕ⧋āĻĄ āϰāĻŋāĻ­āĻŋāωāϤ⧇ āύāĻž āĻĒ⧌āρāĻ›āĻžāϝāĻŧāĨ¤

Best Practice

āχāĻŽā§āĻĒā§‹āĻ°ā§āϟāϗ⧁āϞāĻŋ āϏāĻžāϜāĻžāύ⧋ āĻāĻŦāĻ‚ āĻ—ā§āϰ⧁āĻĒ āĻ•āϰāĻž āϰāĻžāϖ⧁āύ; āĻāϟāĻŋ āĻāĻ•āχ āĻĢāĻžāχāϞ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• āϏāĻšāĻ•āĻ°ā§āĻŽā§€ āĻ•āĻžāϜ āĻ•āϰāϞ⧇ āĻŽāĻžāĻ°ā§āϜ āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟ āĻ•āĻŽāĻžāϝāĻŧāĨ¤

Best Practice

āϕ⧋āύ⧋ āĻ…āύāϞāĻžāχāύ āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ⧇ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āϏāĻŋāĻ•ā§āϰ⧇āϟ āĻŦāĻž āĻŸā§‹āϕ⧇āύ āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰāĻž āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϚāϞ⧁āύāĨ¤ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āϕ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻžāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āχāύāĻĢā§āϰāĻžāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ clang-format āϚāĻžāϞāĻžāύāĨ¤

Additional Resources

Other Tools