KISS πŸ‡ΊπŸ‡¦

Stop the war!

Stop the war in Ukraine! Fuck putin!

More information is at: https://war.ukraine.ua/.

There is a fund to support the Ukrainian Army: https://savelife.in.ua/en/donate/, and there is a special bank account that accepts funds in multiple currencies: https://bank.gov.ua/en/about/support-the-armed-forces. I donated to them. Please donate if you can!

Killer putin

Killer putin. Source: politico.eu.

Arrested putin

"It hasn't happened yet, but it will happen sooner or later. Beautiful photo, isn't it?" Source: twitter.

Cleaning swift build products clarifies errors

| comments

This is a quick note about the fact that if you get surprising or unexpected build errors in a swift project, cleaning the build products directory may clarify them. In AppCode, the fastest way by default is to press Cmd+Shift+A to open the action fuzzy search and type “Clean build folder”; in Xcode, the shortcut is Cmd+Opt+Shift+K.

There are two kinds of errors I’ve seen that are improved in this way:

Circular dependency

1
2
myapp/Model/MyModel.swift:11:8: error: circular dependency between modules 'Model' and 'ViewModel'
import ViewModel

In this example, the ViewModel target uses Model, but then ViewModel was imported in Model. The compiler found the previously built ViewModel in the products directory and tried to incrementally compile Model, producing a circular dependency between the two. If you clean the build products, you’ll see that ViewModel isn’t actually built yet by the time Model is built; you have a clearer error:

1
2
myapp/Model/MyModel.swift:11:8: error: no such module 'ViewModel'
import ViewModel

Library not loaded

1
2
3
4
~/Library/Caches/JetBrains/AppCode2020.1/DerivedData/myapp-foobar/Build/Products/Debug-iphonesimulator/myapp.app
dyld: Library not loaded: @rpath/ReactiveSwift.framework/ReactiveSwift
  Referenced from: ~/Library/Caches/JetBrains/AppCode2020.1/DerivedData/myapp-foobar/Build/Products/Debug-iphonesimulator/ViewModel.framework/ViewModel
  Reason: image not found

This might happen when you’re launching a built application. In my case, ReactiveSwift is installed with CocoaPods, but apparently it’s not linked to a target in the application. Cleaning the build directory gives another error, which is not much clearer, but at least it happens while building, not at runtime:

1
2
ld: file not found: ~/Library/Caches/JetBrains/AppCode2020.1/DerivedData/myapp-foobar/Build/Products/Debug-iphonesimulator/myapp.app/myapp
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Comments