Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
Coming from Android, I got used to Dagger as my main DI framework.
Recently, I joined a new iPhone project written in Objective-C which have no DI framework.
I would like to add one to our project, and I wonder which one is the best one to use, when it comes to simplicity and performance.
I would like to hear your opinion and experience.
Thanks!
Dependency injection is a popular design pattern in many languages, such as Java and C#, but it hasn’t seen widespread adoption in Objective-C (yet!).
This is an excellent read to get you started on DI is Objective-C. Additionally, you'll find this, this & the Grand Daddy this indispensable for DI in iOS.
This framework seems to be making a lot of noise these days.
In my personal experience, more than anything else DI helps you a lot in testing. It's not all or nothing approach (which is common for many design patterns) allows for easy, no-cost adoption & definitely valuable returns.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I'm already using Dagger2 and everything is working but I have a doubt about the proper way to integrate it into the business logic.
What Robert Martin says in "Clean Architecture" is that the DI frameworks, since they are frameworks, are details that should be kept away from the Entity and Use cases and more in general from all the classes that are at a higher level than the frameworks.
What R.M. suggests is to allow only the Main-module to know the DI framework used and to inject the other classes by yourself in such a way that you can replace one DI framework with another one without having to change the BL.
Is there a way to isolate Dagger in such a way that the business logic does not see it?
Strictly speaking, yes: DI frameworks should also not be used in use case or entities circle. (That includes attributes and annotations)
The question would be how strict u want to handle this rule in ur project. Every rule and decision has pros and cons. As u said the pro of keeping DI out of the inner circles would be that u could easily replace it later. U would have to decide how big the benefit is compared to the cons, e.g.: having to pass dependencies to use cases manually.
Personally I currently try to handle it very strict in my projects. But my usecases tend to have only few dependencies ...
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I am going to start a new application in iOS and there are multiple architectures available in iOS i.e Viper,MVVM,MVP and MVC.
I have search google but didn't find any specific use of these architectures.
Can anyone please guide me that when and which architecture should be used and which is more beneficial?
I will try to put my answer in short:
MVC: This is the basic architecture you will find most of the people use. Without knowing this, don't go forward as it's wasting time doing so. But this architecture no one is interested in the current market as it has few drawbacks. When comes to unit testing people find it difficult. So they started moving on. One good thing about this architecture is your development is super fast.
VIPER: which became very popular these days for its separation of data, design, controller logic. For unit testing, it will be very nice. But understanding and putting efforts in this are more. If you fully understand this one, I advise you to go.
MVP: People who understand MVC, can easily go with this MVP. As there are not many changes involved in this from MVC. Presentation logic will be separated out. If you want to build good architecture, not the basic one go for this.
MVVM: It also requires good efforts from you. Don't go until you understood. Again very good separation of model, View, ViewModel.
Now it's your choice to get onboard. As all of us know, how important an architecture is for an app, don't take fast decisions here. Take your own time and conclude based on the time you have in your hands, the need for proper architecture.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
There are already some questions regarding this topic at SO, but they are quite old, so I wanted to know if nowadays there is something that allows to port an iOS app (swift & objective-c) to OSX.
If the answer is no, Is it "easy" to do this task for one with no experience in OSX programming ?
Is it "easy" to do this task for one with no experience in OSX programming
No. Desktop programming is nothing like iOS programming. Cocoa Touch (on iOS) is a very different framework from good old-fashioned decades-old crufty tricky complex Cocoa. What you describe is do-able, but it can't be done by magic or by machine; it requires serious human work, and to call that work "easy" is wrong. There's a definite non-trivial learning curve.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
Is there any standard way to build developer, just making the developers understand the code easily after delivering, if you have sample it's better
If you want to know how to make your code better, you need to read about SOLID and other object-oriented design patterns.
There are no official Apple developer programming style guides.
I.e.: no official "Programming Standards" exist.
Standard only exist in terms of UI, external appearance of your application.
Normal software development criteria apply:
commenting
using software patterns appropriately, as pointed out in another answer, SOLID makes a lot of sense. Just in order to understand Apple Frameworks you need to know software patterns: delegation, visitor, proxy, etc.
document requisites and change requests, api and architecture if the app is complex
don't rely too much on bug tracking, these tend to be abused (change requests marked as bugs) and might add too much complexity of their own (JIIRA).
your organization may adopt an existing programming "quality standard" and adapt it to iOS development. ITIL is and ISO are usually overkill.
Sometimes it makes no sense to over-optimize and over-engineer everything, including your code and programming standards.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I am looking forward to learning XCODE, what is an appropriate approach to mastering ios programming. I want to know precisely, in order, what I should learn to know XCODE. Since there are different aspects to XCODE, I am confused on where to start. Such as COCOA, objective-C, etc. Can anyone provide me with a solid plan that will give me a solid programming skills with XCODE? Thank You
Start with a good book that teaches you Objective-C with Xcode 5.
Stephen Kochan has a good one.
That will get you going.
But check a few to see what makes sense to you.
Just make sure it has Xcode 5 so you don't get lost.
After you get through a bit with Objective-C you should fill in what you need of C.
C is not hard but it is truly agnostic from frameworks that really do interesting things so it makes learning C first rather challenging.
(Like learning math without any real idea why or what to use it for)
In the end though, expect a long road of perpetual learning. You will feel overwhelmed at times. That's normal.
Nobody knows all if it and the masters have years of experience and knowledge.