ios-base
2
总安装量
1
周安装量
#64767
全站排名
安装命令
npx skills add https://github.com/choshimwy/iosagentskills --skill ios-base
Agent 安装分布
amp
1
cline
1
opencode
1
cursor
1
kimi-cli
1
codex
1
Skill 文档
iOS/Swift æ ¸å¿å¼å
Swift ç¼ç è§è
å½åè§å
- ç±»åå UpperCamelCase:
class NetworkManager,struct UserProfile - åé/彿° lowerCamelCase:
var isLoading,func fetchUser() - Bool 屿§ç¨
is/has/should/canåç¼:isEnabled,hasPermission - Protocol æè¿°è½åç¨
-able/-ing:Codable,DataProvidingï¼æè¿°è§è²ç¨åè¯:Delegate - 缩å: é¦ä½å
¨å°å
urlStringï¼éé¦ä½ä¸¤åæ¯å ¨å¤§åuserIDï¼ä¸åæ¯ä»¥ä¸é¦åæ¯å¤§åuserUrl
ç±»åéæ©
- é»è®¤ç¨ structï¼éè¦å¼ç¨è¯ä¹/ç»§æ¿/deinit/ObjC äºæä½æç¨ class
- ç©·ä¸¾ç¶æç¨ enum + associated value:
case loaded(Data),case failed(Error) - 常éå½å空é´ç¨æ case ç enum:
enum Constants { static let timeout = 30.0 }
è®¿é®æ§å¶
- é»è®¤æä¸¥æ ¼:
private>fileprivate>internal>public>open - å¯¹å¤ API æ¾å¼æ 注
public - ViewModel ç
@Published屿§ç¨private(set) - SwiftUI ç
@Stateå¿ é¡»æ 记为private
é误å¤ç
- å®ä¹é¢åé误 enum éµå¾ª
LocalizedErrorï¼å®ç°errorDescription - ç¨
throwsä¼ æé误ï¼é¿å éé»å¤±è´¥ - ç¦æ¢ç产代ç ä¸
try!/as!/!ï¼é¤éæç»å¯¹å®å ¨çç±å¹¶å注é
å¹¶å (async/await)
- ä¼å async/await èéåè°æ Combine
- å¹¶è¡ç¬ç«ä»»å¡ç¨
async let - UI æ´æ°å¿
é¡»å¨
@MainActor - å
±äº«å¯åç¶æç¨
actorä¿æ¤ - ViewModel ç±»æ æ³¨
@MainActor - SwiftUI View ä¸ç¨
.taskå¯å¨å¼æ¥ä»»å¡ï¼èªå¨åæ¶
éå
- å§ç»ç¨
[weak self]ï¼ç¶åguard let self else { return } - ç¡®å®è¢«å¼ç¨å¯¹è±¡çå½å¨ææ´é¿æç¨
[unowned self]
代ç ç»ç»
- ç¨
// MARK: - Sectionååº - Protocol å®ç°æ¾ extension
- 彿°ä¸è¶ è¿ 40 è¡ï¼æä»¶ä¸è¶ è¿ 400 è¡
- ç¨
guardæåè¿åï¼æå¤ 3 å±ç¼©è¿ - SwiftUI View body ä¸è¶ è¿ 40 è¡ï¼å¤æé¨åæå为 computed property æå View
注é
- å
¬å¼ API ç¨
///ææ¡£æ³¨éï¼å«åæ°/è¿åå¼/å¼å¸¸è¯´æ - 注éè§£é whyï¼ä»£ç æ¬èº«è§£é what
- å é¤è¢«æ³¨éæç代ç
项ç®ç»æ
é»è®¤ç®å½å¸å±
App/ â AppDelegate, SceneDelegate, å¯å¨é
ç½®
Core/ â åºç¡è®¾æ½ (Network, Storage, Extensions, Utilities)
Features/<FeatureName>/ â åè½æ¨¡å (Views, ViewModels, Models, Services)
UI/Components/ â å¯å¤ç¨ UI ç»ä»¶
Resources/ â Assets, Localizable, Info.plist
æ¶æéæ©
- SwiftUI é»è®¤: View + ViewModel (@Observable) + Model + Service
- UIKit é»è®¤: MVVM + Coordinatorï¼ä¸å以ä¸é¡¹ç®ï¼
- 夿 SDK/大å项ç®ç¨ Clean Architecture: Domain â Data â Presentation
ä¾èµæ³¨å ¥
- éè¿ init æ³¨å ¥ï¼ä¸ç´æ¥å¼ç¨åä¾
- å®ä¹ Protocol æ½è±¡ï¼æ³¨å ¥å议类å
- SwiftUI ç¨
@Environmentæ custom EnvironmentKey - UIKit éè¿ Coordinator æ init æ³¨å ¥
模åå
- ç¨ SPM æåæ¬å°æ¨¡å
- Core 模åé¶å¤é¨ä¾èµ
- Feature 模åä¾èµ Coreï¼ä¸äºç¸ä¾èµ
- æ¯ä¸ªæ¨¡åæç¬ç« Tests target
æä»¶è§å
- 䏿件ä¸ä¸»ç±»åï¼æä»¶åä¸ç±»ååä¸è´
- Extension æä»¶:
String+Validation.swift - æµè¯æä»¶:
UserServiceTests.swift
SwiftUI æ ¸å¿è§å
ç¶æç®¡ç
- ä¼å
@ObservableèéObservableObjectï¼iOS 17+ï¼ @Stateå¿ é¡»æ è®°privateï¼ç¨äº View æ¥æçç¶æ@State+@Observableclass æ¿ä»£@StateObject@Bindingä» ç¨äºåè§å¾éè¦ä¿®æ¹ç¶ç¶æ@Bindableç¨äºæ³¨å ¥ç@Observable对象éè¦ç»å®æ¶- åªè¯»å¼ç¨
letï¼ä¸è¦ç¨@Stateæ@Binding @Observableç±»å¿ é¡»æ æ³¨@MainActor
ç°ä»£ APIï¼å¿ 须使ç¨ï¼
foregroundStyle()èéforegroundColor()clipShape(.rect(cornerRadius:))èécornerRadius()NavigationStackèéNavigationViewnavigationDestination(for:)å®ç°ç±»åå®å ¨å¯¼èªTabAPIï¼iOS 18+ï¼èétabItem().onChange(of:) { old, new in }ååæ°çæ¬.taskèé.onAppearå¯å¨å¼æ¥ä»»å¡ButtonèéonTapGestureï¼é¤ééè¦ä½ç½®/次æ°ï¼
æ§è½ä¼å
- åªä¼ é View éè¦çå ·ä½å¼ï¼é¿å ä¼ æ´ä¸ªå¤§å¯¹è±¡
- é¿å çè·¯å¾ä¸çåä½ç¶ææ´æ°ï¼æ£æ¥å¼åååèµå¼ï¼
- ForEach å¿
é¡»ç¨ç¨³å® IDï¼ç¦æ¢
.indicesï¼å¨æå å®¹ï¼ - 大å表ç¨
LazyVStack/LazyHStack - é¿å å¨ ForEach ä¸å èè¿æ»¤ï¼é¢å è¿æ»¤å¹¶ç¼å
- View body ä¿æçº¯åï¼æ å¯ä½ç¨æå¤æé»è¾
å¨ç»
- ç¨
.animation(_:value:)èéå·²åºå¼ç.animation(_:) - æé®ç¹å»ç¨
withAnimation - å¨ç»ä¿®é¥°ç¬¦æ¾å¨è¢«å¨ç»å±æ§ä¹å
- è¿æ¸¡ç¨
.transition()+withAnimation
UIKit æ ¸å¿è§å
ViewController ç»æ
æé¡ºåºç»ç»ï¼Properties â UI Components â Lifecycle â Setup â Methods â Actions â Protocol Extensions
å¸å±
- ä¼å
SnapKitï¼å¦å¯ç¨ï¼æ
NSLayoutConstraint.activate([]) - ä¼å
UIStackViewåå°çº¦æ - 夿å表ç¨
UICollectionViewCompositionalLayout+DiffableDataSource
å å管ç
- Delegate å¿
é¡»
weak - éå
æè·
[weak self] - Timer/è§å¯è å¨ deinit 䏿¸ ç
ä¸é¡¹åè
æ·±å ¥å¦ä¹ ç¹å®ä¸»é¢æ¶ï¼æ¥é 以ä¸è¯¦ç»æåï¼
- SwiftUI å¼å – ç¶æç®¡çãç°ä»£ APIãå表æ§è½ãå¨ç»ãå¸å±æä½³å®è·µ
- UIKit å¼å – ViewController ç»æãå¸å±ãCell å¤ç¨ãèªå®ä¹æ§ä»¶
- å¯¼èªæ¶æ – Coordinator Patternï¼UIKitï¼ãNavigationStack + Routerï¼SwiftUIï¼ãæ·±åº¦é¾æ¥
- å¨ç»ç³»ç» – SwiftUI å¨ç»ï¼éå¼/æ¾å¼/è¿æ¸¡ï¼ãUIKit å¨ç»ãæ§è½ä¼å
- æ§è½ä¼å – SwiftUI çè·¯å¾ä¼åãUIKit è§å¾å±çº§ä¼åãå å管ç
- ç»ä»¶è®¾è®¡ – èªå®ä¹ç»ä»¶ãå¯é ç½® APIãå¯å¤ç¨æ¨¡å¼
- å åç®¡ç – 循ç¯å¼ç¨ãæ³æ¼é¢é²ãweak/unowned 使ç¨
â Sentinelï¼Skill 使ç¨èªæ£ï¼
å½ä¸ä»
å½ä½ ç¡®å®æ¬ Skill 已被å 载并ç¨äºå½å任塿¶ï¼å¨å夿«å°¾è¿½å ï¼
// skill-used: ios-base
è§åï¼
- åªè½è¾åºä¸æ¬¡
- 妿ä¸ç¡®å®æ¯å¦å è½½ï¼ç¦æ¢è¾åº sentinel
- è¾åº sentinel ä»£è¡¨ä½ å·²éµå®æ¬ Skill ç硬æ§è§åä¸äº¤ä»æ ¼å¼
- åªæå½ä»»å¡ä¸æ¬ skill ç description ææ¾å¹é æ¶æå 许è¾åº sentinel