What is the "Tests" target under xcode5 - ios

Please don't flame me here. I've searched and can't find this.
Why does Xcode 5 add a second target with "Tests" at the end? Example "myApp" and then "myAppTests".
Why do I want that?
I think I've deleted it in the past, but I'm annoyed that it adds it. Is there an easy way to create new templates that are more like the old ones without it?

It is for unit testing, I do not know if since Xcode 5 you are able to create a project without this target.
You might have a look over here : http://remotewhiteboard.com/blog/apps/how-to-delete-a-target-in-xcode-5/

Related

Annoying XCode Source Kit bug with multiple targets

I'm struggling with this problem for nearly half a year now with multiple XCode versions and Macs.
I can't reproduce bug steps exactly but the things go off when project has multiple targets like for Mac and iOS.
First of all XCode declines to take #if os into account and always highlight syntax only in one type of sections. E.g. if I have os(iOS) and os(OSX) somewhere it will chose only one and highlight only them.
Same goes for autocompletion. Things just not working in that type of projects.
I really dont know what to do since developmenet process turns into struggling. I dont want to split my project into multiple one, I'm happy with multi-target setup.
Is there a way to fix that?
Almost a year late.
Anyway I faced the same situation where a multi target OSX/iOS application in Xcode did not take into account the #if TARGET_OS_IPHONE conditional and failed to autocomplete method names from framework only showing the iOS variant.
Found a solution, based on this blog entry : you have to clearly state the Framework search path on each target in Build settings
Edit: This line was present in the iOS target settings. I copy/pasted it to the MacOS target in Xcode where it was automatically adjusted to the right path.
Edit 2: Loosely related but if you run in trouble with interface builder picking wrong classe files see this answer I just posted in another old thread.

Best way to rename an app in Xcode 6.3?

Every time I select the Target(the app), then change the app's name in Identity and Type, Xcode crashes. Is there a good way to change the name of an existing app? Thanks
I was looking into a solution for this a few days ago, and unfortunately I think there's no straightforward way to rename a project. What I ended up doing, because I hadn't done much in the project, was to create a new project with the correct name and then copy the files I needed, such as the storyboards, class files, etc.

How to reuse an Xcode project into a new project? Static library, Framework, Targets?

I built an iOS project (actually workspace because of Pods) that is 100% functional, with its logic and UI (Storyboard and xibs). Now I would like to reuse this app/project as a "core" for future apps.
I've been searching about it and there are several solutions like Static libraries, Frameworks and Targets. But I am not sure which one would be the best in my case. I would like to reuse all the UI part as well.
I saw that most of the people agree that the best approach for reusing code is static libraries, even thought it looks not so straight forward. But I think for reusing UI probably Targets is the best solution. The problem I see is that if a build 10 apps based on my core project, the new project will be huge, so probably it is not the best option.
I don't know if you guys have any better idea or opinion.
Thanks in advance!!
There are several things you can do, and I will try to go through them.
If you have minor changes on your "base" app, then the best thing would be using targets(build schemes). This way you can add things to build phases and therefore, add files that you need. This might be the quickest possible way to do what you want but here are some drawbacks: What if you have 5 apps, and for each one you have QA and prod. That 10 build phases. If you keep using your app in no time you will find hard to manage it.
Another thing could be to create different project, and include all the files you have (and you need), inherit from there and have extended functionality/UI/UX. This is slower approach then number 1, but you will have dependency on the files that you might change in one app and don't want to propagate that change in other apps. So the drawback would be that you have to be extra careful, and plan a lot of things in advance.
Third thing could be to create base app group(or project) and then you are certain what to do, where and what that change could do to other apps(since you know that this file is actually being reused).
And finally, there is a framework, which is my favorite. I am working on one project that inherits base app and we found that is a huge problem. You start separated and then, one thing by one, you have entangled code for specific app and base app like headphones in pocket. And if you don't refactor it ASAP, it will became really hard to resolve these kind of issue. Not to mention merging and other stuff. Here is an excellent article about creating framework http://www.raywenderlich.com/65964/create-a-framework-for-ios . Off course, there is a price to pay and that's every change that you create you must update library and add it again to project. This thing can be easily forgotten and if you are working in team could produce build crash.
All after all, you predicate that you will have more then 5 apps, so I would say go with the framework. This way you will have much cleaner and separated app, and won't have to think about changing things and how these changes would affect your other apps.
I recommend you use a custom project template. I did it perfectly today. I had the same needs as your. Follow this link: https://github.com/reidmain/Xcode-6-Project-Templates/tree/master/iOS%20Application.xctemplate
Download it. You can add all the files from existing project into this template, storyboards too. If you have any doubts I will help you.

xcode build settings for imported libraries (xcode 5)

I'm having a small issue with xcode (I'm assuming it's mostly due to being unfamiliar with xcode itself) and was hoping someone could lend me a hand.
I'm working with a group of people and we're using the GPUimage framework.
The problem is this:
For every person referencing GPUimage we get additional entries in the build settings for the xcode project.
For example build products path would be:
/Users/username/project/application_name/GPUImage-master/GPUimage.framework
I would rather it be:
/application_name/GPUImage-master/GPUimage.framework
The reason I want to fix this is because we need to package up our application and library together so that whoever wants to use it only needs to open the xcode project file to see what we've done (to mark it, school project).
Can anyone suggest what I should do or look for here?
Try adding the following to the beginning of the user path:
$(SRCROOT)/application_name/GPUImage-master/GPUimage.framework
That should instruct XCode to use the user path of whoever is using the library
Hope this helps!

Remove unnecessary frameworks in Xcode project

I have been writing iOS applications and completed a project with a lot of frameworks. Now I am using it as a template to start a new project that requires less functionality and hence I should be able to reduce the frameworks required, and hopefully reduce build time and size of project.
Question:
Is there a quick way to check which frameworks are no longer required within the project?
I don't think there is a better way than removing the framework, building, and seeing if there are link errors. You might be able to write a bash script but it's probably more work than it's worth.
Sadly not. The quick way is to remove all the frameworks, look for build errors and add back in the necessary frameworks.
search in the project files(cmd+shift+F).i.e whether you are imported any files related to the frameworks.

Resources