Xcode 4.5.1 get stuck when archiving - ios

I just upgraded my xcode to version 4.5.1.
Everything worked fine before but now, when I Archive the project, xcode get stuck/hanging and never finishes the archiving.
In the status on top, the text says:
Compiling 10 of 10 source files...
Nothing happens after that. It is just stuck.
I can still compile and build the code (without archiving) and everything runs just fine in the simulator.
I have reinstalled xcode. The issue still happens after that.
Any suggestion will be appriciated.
More info:
I've pinpointed the problem to a specific line of code:CGRect tmpFrame3 = seeDetailsButton.frame;
I don't see any problem with this line...
Why would it work fine when building and running in the simulator but fail when archiving???

I figured out what is going on here.
First, it is not related to the archive process itself but to the build in Release mode.
The reason that I had the problem during archive is because then it builds in release mode.
About the issue itself:
It seems that there is some sort of an Apple compiler bug in xcode 4.5.1.
I'm using the Apple LLVM compiler 4.1. During compilation it has different optimization levels.
In Debug - the optimization is set to 'None' and is off. In release it is set to 'Fastest, Smallest [-Os]'. When I turn off the optimization in release mode (set it to 'None') - the issue does not happen.
More info:
After digging in my code, and trying to figure out what would cause a compiler bug during optimization, I saw that I had the following:
__weak ProfileButton *tmp = myButton;
Where ProfileButton is just a regular button inherits from UIButton.
When I remove the __weak everything works just fine. Even when I set the compiler optimization to 'Fastest, Smallest [-Os]'.

Recently faced this same issue, with Xcode hanging on the final file during compile. In the same fashion as the problem above, setting the optimization level for release to None ([-O0] to match the debug mode) would allow archive to run successfully.
However, for our code the specific bug was tied to a block that was capturing self. Per Apple's guidelines:
"If you need to capture self in a block, such as when defining a
callback block, it’s important to consider the memory management
implications.
Blocks maintain strong references to any captured objects, including
self, which means that it’s easy to end up with a strong reference
cycle..."
So be sure to check your code for this, if applicable, and follow Apple's best practice to capture a weak reference to self (example in documentation).

In my case I created a circlic subclass
It was like
#interface BaseTableViewController : PaymentTableViewController
and
#interface PaymentTabelViewController : BaseTableViewController
What i did was to reneme the last subclass, so it now looks like this:
#interface TopTableViewController : PaymentTableViewController
and
#interface PaymentTableViewController : BaseTableViewController

In my case the issue arose when one of source files contained a declaration of a very large array like this:
NSArray<NSArray<NSNumber *> *> *points =
#[
#[#38.576732f, #-90.230682f, #1495320246], // 1 item
...
#[#37.478034f, #-89.524851f, #1495336147] // 3000 item
];
There were about 3k items. Splitting the source line into small ones doesn't helped.
Fixed it by placing items in a CSV file and parsed it at run-time.
Another approach could be splitting into smaller arrays and concatenating at the run-time.

Related

Unable to Build mac project in XCode14.0/14.1 with macOS ventura

I have recently updated to macOS 13.0 and for that minimum XCode Version required is 14.x series. But my existing project never getting successfully building. Its getting stuck at some point.
Its not getting failed. Build process screenshot is attached below. Its not pointing to any specific class. Seems like there are lots of classes which are getting compiled successfully at last but still build process is stuck at some point:
Seen similar threads like below on apple pages but nothing seems working. Does anyone got resolution?
Xcode 14 project compile error
XCode 14 compile errors immediately disappear or do not appear at all
Something similar has happened to me in the past on a number of occasions. If the Swift compiler is hanging mid-build, usually the issue is that there is some expression that is too complex for Swift to do the type inference on.
What you need to do is first find the exact statement that is causing the hang. This is how I do it:
First find out which source file is causing the problem. Look at the build log to figure this out (the build log can be located by looking at the reports navigator ⌘9 ). Find the build log and click on it. The build log will appear in an editor window.
One of the compiles will still be in progress and its file is the one you want.
The next thing to do is comment out all the code and recompile. This time the compilation will finish (if you have the right file, or there is only one) but probably with a lot of errors. Then you add the code back in, function by function, until one of them causes the compilation to hang again. If it's not obvious which line of the function is causing the problem, comment it out again and then add the lines back one by one until the compilation breaks again.
Once you have located the line, you need to simplify the type inference on that line. If it's a closure, try adding an explicit declaration for its parameters and return type. If it involves some complex array, try adding a type annotation to its declaration. Also try breaking down complex expressions into multiple simpler expressions.
There's no one size fits all answer to this but usually, once you have located the exact line that is causing the problem, it should be reasonably obvious how to fix it.

Swift sometimes calls wrong method

I noticed strange behaviour during working with Swift projects. I can't explain it other than Swift sometimes calls wrong method. It is very rare and even adding blank lines to the code could lead that this error is gone.
Let me explain in screenshots what I mean, next I use CoreData example of SwiftDDP project that can be found on Github, but such issues I was able to see in my own projects.
Here we at Todos.swift:74 where you can see breakpoint, I expect that next call should be getId() method of MeteorClient class because it was already instantiated:
After Step Into as you can see the ping() of the same instance is called:
The next two steps into lead to EXC_BAD_ACCESS exception:
In my project I saw this issue fairly often before I stopped using singletons, so it could be related to Swift static memory usage or I don't understand something that is not surprising as I have little experience with multithreading and memory management.
My environment is:
AppCode OC-145.184.11
Xcode Version 7.2.1 (7C1002)
iOS 9.2 SDK
Apple Swift version 2.1.1 (swiftlang-700.1.101.15 clang-700.1.81)
NOTE: Here I use AppCode but the same behavior I was able see in Xcode, and even more if the same issue that reproduces in Xcode could not reproduce in AppCode and vice versa.
Would be thankful if someone can explain this strange behaviour to me.
Thanks!
This just happened on my team, using Swift 2.2. It's really incredibly strange. It's not a threading issue or an async problem, it was a very cut & dry use case. We called one instance method and another one above it got called. I deleted the method that was getting called, and then the one above THAT got called instead. Then I moved the method I was actually calling to a different location in the file, and it looked like multiple properties were getting called.
This is disturbing and worrisome, as now you feel you can't trust your code to run properly.
But we did "solve" it. We moved the method up to the code that was actually getting triggered, and after a little trial & error the right method got called. Not yet sure if this will manifest itself for other methods.
It'd be nice to be able to provide a simple project where this is happening, but it seems highly unlikely that it's possible, and I can't share a snap shot of my code base with Apple. It must be a perfect storm of something to cause a bug with Swift's run time.
I had a similar issue, I think. Couldn't see that the wrong function was being called, but breakpoints on the function that was being called were never hit, and I couldn't step into the function from where it was being called. I added a new function (I called it wtf) with the same parameter list and implementation, and that one worked as expected, so it must have been a weird linking issue in the Swift compiler.
Update: super-cleaning appeared to work (see below), but it doesn't. Looks like I'm leaving my wtf function in.
After super-cleaning the project, it looks like everything's working as expected again:
clean (cmd + shift + k)
clean build dir (cmd + opt + shift + k)
quit XCode
delete derived data (rm -rf ~/Library/Developer/Xcode/DerivedData/*)
FYI, in my case, the function I call is in a generic base class, called from a generic subclass, triggered by a specialized sub-sub-class. As we all know, the generics are still very buggy in the Swift compiler, so that's probably why I encountered this.
Do you have multiple threads running? Maybe a network thread?
I thought I had this issue too but then it turned out my one thread was doing something and because the other thread crashed it stopped the other thread at a random point. I only noticed this thread so it seemed like it crashed at a random #IBAction function.
When I switched to iPhone 6 simulator instead of iPhone 7, it seems to be working correctly now!
Our app was rejected from review because of a mysterious crash. After debugging I found that it was having this same issue - but only for the Release scheme!
So I went through every setting in Build Settings one by one to see if switching it to that of another scheme would fix the issue: changing ENABLE_TESTABILITY to true fixed it......

SourceKitService Terminated

I am having a issue with Xcode where the error "Source Kit Service Terminated" is popping up and all syntax highlighting and code completion is gone in Swift. How can I fix this?
Here is an example image:
The answer to mine (Xcode6-Beta7) was simply to delete the Derived Data folder.
Preferences > Locations > Derived Data > click the arrow to open in Finder > trash it.
There's obviously many reasons why this crash can occur.
I believe I may have found a more general purpose solution. Below are the steps I used to encourage Xcode not to produce the SourceKitService Terminated error.
The symptoms I was having:
When I would start up a new playground, I would receive an error about not being able to communicate with the playground (Error running playground: Failed prepare for communication with playground. See this image on twitter.
When I would switch the playground from OS X to iOS, I would receive another error (unfortunately I did not write that one down).
When I would start to type in an iOS based Swift project, attempting to use code completion/intellisense on any UIKit specific class, I would receive the SourceKitService Terminated issue in this thread.
Debugging process:
I started by looking through google for SourceKitService, this got very little.
I then started monitoring Console.app while using Xcode. This showed a couple errors:
IDEPlaygroundDocument: Error encountered running playground
com.apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.
What I did to correct this issue.
If you are only having an issue within the context of a Swift project, try this alone first. If that doesn't work, then try all of the steps further below.
Open your project and change the target's deployment target to something <= 7.1.
The more lengthy and involved process.
(The first 3 steps are not for sure helpful, but I did them, and so record them here)
Completely delete all copies of Xcode on your system.
Restart your computer.
Reinstall Xcode6-beta only.
Verify that you still have the issue in playground and/or projects.
Open iOS Simulator.
Hardware -> Device -> Manage Devices
Remove all devices.
Recreate all devices you want. I appended the iOS version to the end of the name, just because.
Restart Xcode and the simulator.
Verify that at least playgrounds no longer throw issues when switched from OS X to iOS.
Open your project and change the target's deployment target to something <= 7.1.
Analysis
It appears the issue is with Xcode6 not being able to properly find, and connect, to the simulator. I have not been able to determine why this is the case, but this has allowed me to continue developing with Swift. This may have to do with the fact the simulator binaries seem to have moved.
You just need to delete the "ModuleCache", this is some kind of cache used by Xcode for Autocompletion.
Copy and paste the following line in the Terminal:
rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache
SourceKitService crashes on my system as soon as I type
extension foo {
I'm using Xcode 6 beta 6 and it does not matter if I type it into an empty file or add it to an existing one. As soon as the source contains one extension block, it will crash. This happens even on newly created projects.
My "solution" is to avoid extension in the sources I'm currently working on. I comment out the end of a class block and the beginning of the extension block. As soon as I have finished my work on the class, I comment them in again:
class MyClass {
[... my stuff ...]
//}
//
//extension MyClass {
}
It started happening on my spritekit project after inserting the touchesMoved-function. This function uses forced unwrapping, which seems to cause the problem:
override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!)
After removing the exclamation marks and thus stopping forced unwrapping, the SourceKitService stopped crashing.
Hope this helps!
I found a solution on Apple's Developer Forums (which requires login, so I'll explain it here too).
TLDR: Don't import a #protocol in your Objective-C to Swift bridging header that is named the same as an #interface. For example, the Facebook SDK has both a protocol and an interface named "FBGraphObject".
Here's the forum post:
Adding Facebook SDK causes SourceKitService to crash. If you want to use beta 3 and you need Facebook SDK, one work around that I found and is working for me is refactoring Facebook SDK's #protocol FBGraphObject and renaming it to something like #protocol FBGraphObjectProtocol as an #interface FBGraphObject also exists and apparently SourceKit doesn't like it.
It sure is a temporary solution just to keep you functional and you'll have to use Cocoapods or otherwise build Facebook SDK yourself rather than using the framework library.
For the time being, you'll need to make sure you don't have conflicting #protocol and #interface declarations and that includes 3rd party libraries you may be using.
This cost me today, hope it helps!
Posted by e.parto on July 10, 2014
Use other name than Swift for the project. "Swift" is reserved.
I had this problem every few seconds in Xcode 6 Beta 3, and it continued even in completely new projects. I changed the Deployment Target from 8.0 to 7.1 and it has stopped.
Is your project named Swift? With seeing that message, build would be failed too(<unknown>:0: error: module name "Swift" is reserved for the standard library). Try using another project name such as SwiftTest. It would work.
In order to fix this you may have some weird issue with your Swift code. For instance having multiple defintions of IBOutlets because you were in the middle of copying and pasting. usually it is just a syntax error that couldnt be handled.
I found that by explicitly (statically) typing the variable types, rather than inferring them, solved the issue for me.
Quit Xcode if it's open. Then from Terminal run:
defaults delete com.apple.dt.Xcode
This will restore Xcode to the default settings. Open Xcode and everything should work again.
For me (xcode 6.1) reason was that I forgot to adopt my subclass to protocol.
For example this is wrong:
protocol SomeProtocol { ... }
class A :NSObject, SomeProtocol {
...
}
class B : A {
...
}
and this is ok:
protocol SomeProtocol { ... }
class A : NSObject, SomeProtocol {
...
}
class B : A, SomeProtocol {
...
}
A program consisting only of these two lines (possibly wrong in terms of Swift syntax) is enough to cause the "SourceKitService Terminated" error here:
var x = 42
println("Hello", x)
Using let instead of var makes the editor behave normally again. Xcode version 6.0 (6A215l)
Got same issue today, the thing was with println, I just tried the old NSLog style to print a value:
// something like this
println("value = %#", valueObj)
The way how we should compose strings in swift has evolved from printf style to inline style, so now you embed your values right into the format string like this:
"Here goes \(YOUR_VARIABLE)"
So, for the example above the solution is:
println("value =\(valueObj)")
I had same issue with Xcode6 beta 3 for a project created in beta 2.
It was because of new breaking changes in swift language i.e. array declaration syntax.
Check for the effected code due to breaking changes in beta 3.
http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_3_lpw27r/xcode_6_beta_3_release_notes__.pdf
One of the example in my case was:
I had to change:
var tabBarController : UITabBarController = self.window?.rootViewController as UITabBarController;
to
var tabBarController : UITabBarController = self.window!.rootViewController as UITabBarController
Conclusion: Looks like if there is an error in source code, in some conditions this error is produced by Xcode.
Solution till the bug is fixed: Check for the error manually :)
Goodluck!
The solution for me happened to be changing the simulator. I was using iPhone 5S for my simulator and when I switched it to iPhone 5, everything worked perfectly. Hopefully a future version will fix it altogether.
I found that removing derived data from terminal resolves the issue until next crash. :S
It is located at: /Users/{User name}/Library/Developer/Xcode/DerivedData/{Project Name}-{Random char sequence}
I hope this helps.
I think I figured out one (as there are probably many) of the reasons this occurs.
In my case, I was importing Objective-C files through the Bridging Header that had one of the following true:
The implementation file (.m) for the Objective-C import, did not have the
app target properly set.
The Objective-C file only had a header (.h) file and NOT an
implementation (.m) file. (Again, I think this is part of the "no
proper app target" set, as you can only set targets in the .m files
and not the .h files)
Fixing the app targets on the Objective-C files OR removing the import of those file(s) in the Bridging Header all together seems to fix the issue.
FYI - If you need to set the target of Header (.h) files that have no Implementation (.m) file, you can follow these simple steps: Can't change target membership visibility in Xcode 4.5
Just to add one more potential solution here, I had accidentally named a class var the same name as it's type:
class var Settings:Settings {
get { return classVarWorkAround.settings }
}
This will crash SourceKit FOR SURE. Stupid syntax error, but in case anyone else makes the same mistake.
Edit: also according to #Portland Runner:
Similarly, If you set the return type to the func name you'll get the error.
func foo() ->foo{}
When this error starts popping up, just comment out the last/recent piece of code you wrote and wait for a while. The syntax highlighting should reappear. This is how I work around the problem.
func someFunc() -> (Int?, Int?, Int?) {
var retVal1:Int? = nil
var retVal2:Int? = nil
var retVal3:Int? = nil
//some other code
//commenting out the line below helped me
//(retVal1, retVal2, retVal3)
return (retVal1, retVal2, retVal3)
}
Reported to Apple (#17266321) :
Details:
Summary:
If we try to print a dictionary with value as an array a pop-up keeps on popping saying -"SourceKit terminated. Editor functionality temporaly limited". Xcode Freezes and looses context recognition causing text to be blackened.
Steps to Reproduce:
1. Create an array as - "var iOSHistoryArray = ["iOS6","iOS7","iOS8",]"
Create an dictionary as -"var MacOSYosemiteFeatures:Dictionary = ["Device":iOSHistoryArray]".
Print the dictionary as - "println("Dictionary containing Array value : %# \n",MacOSYosemiteFeatures)" (<<- Culprit-->>)
The step 3 causes the issue commenting which makes the Xcode functional again.
Expected Results:
Xcode should function normally.
Actual Results:
Xcode becomes nonfunctional, looses context recognition (All font is lost and all text becomes plain black), whole Xcode becomes Inactive.
Version:
Version 6.0 (6A215l)
Try It:
There is a bug in the Swift compiler / indexer. Some line or lines in
your code is giving it difficulty. You will have to edit your code
with some other text editor to comment out the offending line(s)
before you will be able to open that project with Xcode. If you have
no clue what the problem is, comment out all your code. Once you have
the project open, you can start bringing back code little by little
until the rise in CPU activity tells you that you've found the
problem.
Problem:
If there is an error in source code, the "SourceKitService Terminated" pop up may appear and code highlighting stops working. It may or may not happen, when it does its under multiple different conditions.
My case: Installed beta 3, OSX only project, one file detected the "half-closed range operator has been changed from .. to ..<" error. The pop up starts appearing and code highlighting starts failing.
Solution:
Fix error detected by Xcode
Change to a different .swift in Navigator, come back to the original
Syntax highlighting reappears and "SourceKitService Terminated" pop up is gone
In xcode, go to your menu bar >> window >> devices (shift+cmd+2) a new window will pop up, and on the bottom left, add a new simulator, specifically one running on iOS 8.0 to the existing list
edit: you might need to restart xcode
refrence:http://www.reddit.com/r/swift/comments/2bznfo/error_running_playground_unable_to_find_suitable/
In my case I had imported missing files in bridged header. After I deleted wrong imports the error notification gone.
I had the same error with the nested Objective-C++ project that now includes Framework with Swift code. In order to fix this issue I had to explicitly build the framework. Once I did that issue is gone, and doesn't come back ;)
Still happening with xcode 6 Version 6.0 (6A313)
Create a new project
Add a Framework & Library
Select cocoa touch framework
Add a Swift file
Add a class to the swift file
Crashes
ps: brand new mac mini, no previous xcode installs, nothing exotic. Just a beta product I suppose.
Xcode 6.1 Beta 3:
As soon as you define a non-private type alias (e.g. typealias Foo = Int) in one Swift file an type the letter c in another file the SourceKitService crashes.
Solution is either resign from using type aliases, wait for the next beta release or wrap your type aliases in class definitions:
public class DummyClass {
public typealias Foo = String
}
and use it like this:
var myVar:DummyClass.Foo?
Changing the deployment target to iOS 8.0 worked for me. I know someone said moving it to <=7.1 worked, but this problem seems to come in from multiple sources, so this alternative may work.

#synthesize of 'weak' property is only allowed in ARC or GC mode with first compile of urbanship

Basically, I have an IOS app that functioned without issue.
While following the instructions at http://docs.urbanairship.com/build/ios.html#ios-push-getting-started, I reached the "Register Your Device" section asking me to compile.
After attempting to build the code in xCode 5 I received the following error "#implementation UAPushSettingsAddTagViewController #synthesize of 'weak' property is only allowed in ARC or GC mode".
Note:ARC mode is not in use.
Search for "weak" in your project code and the libraries you include. Change it to a "assign"
Edit:
As #TaylorHalliday points out in his comment below, my answer was rather incomplete.
Changing weak properties to assign will get rid of compiler errors, but it will potentially cause memory management problems if you don't understand how to use manual reference counting.
Since you're using manual reference counting you will need to go through your code and make sure that you retain objects that you need to persist, and then release all owning references to objects when you are done with them. Explaining the details is beyond the scope of a forum post. I suggest you search on "About Memory Management" in the Xcode help system, and read the entire Advanced Memory Management Guide.
You should probably also run the Analyze tool on your project to look for possible memory management problems.
Better yet, convert your project to use ARC. It's much easier to avoid memory management problems when using ARC.
I got same error when I added these two files to my project. My project wasn't enabled for ARC. I had to remove these files first and then had to convert my project to ARC. Then adding these files caused no error.

Xcode LLVM 3.1 and GCC_OPTIMIZATION_LEVEL

I have an Xcode 4.3.2 iOS 5.1 project that compiles and runs fine when my build configuration uses a GCC_OPTIMIZATION_LEVEL of None [-O0], but fails with a EXC_BAD_ACCESS error when using any other optimization level. My project has GCC_VERSION set to Apple LLVM 3.1 (the default). Does this indicate a problem with my code?
Most often it indicates problem with your code. Like:
accessing already deallocated memory
reading or writing memory out of bounds of allocated array
using non initialized variables or class members
and many many others...
In rare cases it happens that such kind of crash turns out to be a compiler bug. But that is rare. More often that is problem with your code.
Try to pinpoint code that crashes and try to see how variables are used nearby that code. Check if everything is used/allocated/initialized/freed correctly there.

Resources