hey hi Team, thanx for this great video again, one doubt related to our project, If the iOS Project seems to take around 4min for running iOS App Target for single line of change, can this build time be improved, and what must be ideal time to run and build iOS app for very small changes for sufficiently large App.
@EssentialDeveloper15 күн бұрын
Hi! Yes, it can be improved by organizing the project so that only changed modules need to be rebuilt.
@hbsvidu28 күн бұрын
Thank you
@HighTech-l6kАй бұрын
hi caio and mike which layer does the engine live in Clean Architecture?
@donk8961Ай бұрын
This is quality. I love listening to programming advice while working out but so many iOS videos are just “make x app.” I’m beyond that, I can make any of those apps independently, but not quite a full senior yet. This is exactly the gap I need to fill, thanks for the upload. If I’d watched this 3 years ago I could have petitioned to rewrite our app’s analytics layer because hooo boy any time a new view controller was added I had to modify 4 other files just to do analytics without compile errors.
@Dragonboh1Ай бұрын
keep doing what you doing
@Dragonboh1Ай бұрын
keep doing what you doing
@Dragonboh1Ай бұрын
keep doing what you doing
@Dragonboh1Ай бұрын
keep doing what you doing
@Dragonboh1Ай бұрын
keep doing what you doing
@Dragonboh1Ай бұрын
keep doing what you doing.
@Dragonboh1Ай бұрын
keep doing what you doing
@Dragonboh1Ай бұрын
Keep doing what you doing
@Dragonboh1Ай бұрын
keep doing what you doing
@Dragonboh1Ай бұрын
keep doing what you doing
@Dragonboh1Ай бұрын
keep doing what you doing
@Dragonboh1Ай бұрын
keep doing what you doing
@1987alejandroivanАй бұрын
Doesn’t the main thread run more than one queue? Or is it a special case? I’ve always struggled to check if I am in the main QUEUE to update the UI…
@EssentialDeveloperАй бұрын
Hi! The Dispatch framework guarantees that work dispatched to the main queue will run on the main thread. But it doesn’t guarantee that the main thread will only execute logic from the main queue. For example, it may run background queue work in the main thread too. Most of the time, checking Thread.isMainThread is enough to safely perform UI updates. But some frameworks like MapKit expect execution on the 'main dispatch queue', not just the 'main thread'. So it depends on the case. Sometimes you must check it's in the main thread and sometimes the main queue.
@maciusessaАй бұрын
Daaaaaamn... Outstanding video. Needed that in my project. Great. Thanks a lot! :D
@Contreras043 ай бұрын
wow... I have been doing it wrong all my life
@captainmichaelj23213 ай бұрын
How can apply similar logic for Firestore requests? This looks so elegant and simple. However, my firestore requests are full of dispatch groups and chained network request codes.
@EssentialDeveloper2 ай бұрын
Hi! You could wrap the Firestore requests in Combine publishers.
@captainmichaelj23213 ай бұрын
Took me a long time to understand what he was talking about here, but now I really appreciate it.
@abdulyasin_iOS3 ай бұрын
Oh my God. You explained it in a much much better way. Thank you sooo much Captain 🫡
@mohammadtahir79313 ай бұрын
Which tool you are using for flow chart?
@EssentialDeveloper3 ай бұрын
Hi! We used draw.io
@IamCutePanda3 ай бұрын
could you please assessed my project and close some " grey spots " I am trying to reach a junior position ( Swift UI ) dev!
@joshkinney48953 ай бұрын
If you were to create a new app (mainly uikit very little swiftui) would you avoid Alomofire? Why?
@EssentialDeveloper3 ай бұрын
Hi! Yes, we'd avoid it because the less 3rd-party dependencies, the easier it is to maintain a project long-term. In our opinion, Alamofire doesn't provide enough benefits to justify the maintenance cost/risk.
@user-gt2rg7hs5q3 ай бұрын
Super cool! Thanks you, Caio
@Joao-nn6gn3 ай бұрын
Not only impressed by the tecnical content, but with how good Caio is in capture what the student is struggleing with
@benjamighty4 ай бұрын
I really like how you progressively improve the architecture and I learn more that way! Awesome tutorial
@PoonamYadav-dn1hk4 ай бұрын
when will be available your crash course
@EssentialDeveloper4 ай бұрын
Hi! You can find info and sign up for the next one here: iosacademy.essentialdeveloper.com/p/ios-architect-crash-course-orga0eb/
@AHTUCYKA4 ай бұрын
Как Богдан шпарит на английском! I really admit it! It seems like something unreachable for me.👍🏻 And the information is useful as well ) Thanks!
@indomitabletr18344 ай бұрын
How many years of developing ios, just now i got the real answer 😮
@munzrs4 ай бұрын
Mark my words. When I become a lead dev this will be required material for my team. Such high quality content that the iOS community sorely needs. Thank you, ED!
@user-ii7mw4fy4t4 ай бұрын
Is it really good practice to put dependency on Domain model into ViewModel? What if we needed the same visual representation for Dog / Chicken / etc? Maybe it's better to keep VM universal and holding only values needed to display and implement the responsibility to fill these values into ViewModel by Presener according to specific Domain level model?
@EssentialDeveloper4 ай бұрын
Hi! It depends on the case. If you want to reuse the same ViewModel for different Domain models, yes, you can decouple the ViewModel from any specific Domain model. It's a case by case decision based on your needs ✅
@dearestpankaj4 ай бұрын
When I add following code the test case doesn't pass: XCTAssertEqual(makeSUT(options: ["A1","A2"]).tableView.title(at:1), "A2") But when I create sut object as following it passes: let sut = makeSUT(options: ["A1","A2"]) XCTAssertEqual(sut.tableView.title(at:0), "A1") The datasource methods of Tableview are not working in first approach but it works in second approach. Any suggestions?
@EssentialDeveloper4 ай бұрын
Hello! This was a breaking change in the latest tooling versions - the instance created by `makeSUT` (which is the table view's data source) is being deallocated sooner in the latest tooling. So by the time the table asks the dataSource for the data, the dataSource will be `nil`. To keep the `sut` alive until the dataSource methods are called, simply extract the `sut` to a local constant such as `let sut = makeSUT(...)` (as you did in your comment) ✅
@aminfaruq.4 ай бұрын
Awesome!
@dilshodzopirov65685 ай бұрын
Very very professional 👍👍. Like it
@shaktisingh81115 ай бұрын
Great video! XCTAssertEqual(sut.tableView.numberOfRows...) Feels like this test is tightly coupled to the implementation of the UI. What if on later stage I want to switch to collectionView or some other view. Should we optimise for that? What are your thoughts?
@dilshodzopirov65685 ай бұрын
Thank you 👍👍👍
@dilshodzopirov65685 ай бұрын
The answers for my troubles which I couldn't even find words to ask properly 👍
This is pure gold... Thank you very much it really helps me..!
@abdula58426 ай бұрын
how would you test loadUserDetailsMethod?
@EssentialDeveloper6 ай бұрын
Hi! We test it by replacing the URLSession with a test double (such as a Stub) to control the results. Then, we run the tests and check the expected result. We teach how to do it in the iOS Lead Essentials program - check it out if you're interested: iosacademy.essentialdeveloper.com/p/ios-lead-essentials/
@abdula58426 ай бұрын
@@EssentialDeveloper i mean i understand youll use a stub to have some sort of canned response before hand for the main method but what about the inner chained publisher and the zip how would you stub all 3 together ? ill be joining the program tomorrow!
@EssentialDeveloper6 ай бұрын
@@abdula5842 you can configure your test double to return different results for each request. Then, you check that the output is what you expected from the chained requests.