Weird errors in Xcode - objective-c

I've recently changed a few lines of code in my app, and it screwed all of it.
There a few weird errors I would like to note here, hoping some of you will know a solution to it-
First- I'm implementing the delegate of UITextField in my app, put it in those , but still in my .m file when I try to implement this method-
- (void)textFieldDidBeginEditing:(UITextField *)textField
It shows this error- Use of undeclared identifier 'textFieldDidBeginEditing'.
Second and third, there are two parse issues- Expected '}' and Missing '#end'. When I add Missing #end from the red circle with a little white square in it button, it shows me the same error again- infinite loop.
How can I solve these?
Thanks in advance.

The problem is that the actual errors are not where you (and the compiler) think(s) it is. Deducing from the error message you got, you're missing a closing curly bracket (}) from the part of your code which falls before the line which errors out.

Related

Import UIKit for debugging Objective-C by default

Whenever I try to read the frame of an UIView for example while debugging, I get this error:
error: property 'frame not found on object of type 'UIView *'
error: 1 errors parsing expression
After searching for a solution, I found out that I can use this command to solve this without adding (annoying and in some cases complicated) casts:
expr #import UIKit;
But I still find it annoying to have to do this every time (why doesn't Xcode do this by default?!), so I thought I should be able to do this using the .lldbinit file, but I couldn't get it to work.
I don't know much about that file, I have this in it atm:
command script import /usr/local/opt/chisel/libexec/fblldb.py
so I tried adding the UIKit import command at the end of the file but it didn't look that it worked. I also tried prefixing it with command to no avail. Is this possible or not? (please say yes; it will save my life)
lldb will auto-import modules that the debug info tells us the program imports fairly soon now. All the pieces weren't in place to do that for the first Xcode 7 releases.
Statements in the .lldbinit get run before the main file is read in, it is supposed to help set up the environment to read in your program. But at that point there's nothing into which to import these symbols. You need to do it after the main binary is read in (and you really need to do it after you have run, since I think we need to run some code to do this.)
At present, the simplest way to do this is to make an auto-continue breakpoint at main, and attach the expr #import UIKit statement as a debugger command in that breakpoint. You'll have to do this once per new project you make, but if you're working on the same project for a while, it's not such an inconvenient workaround.

Weird LLDB error in Xcode 4.5: Internal error [IRForTarget]

When putting breakpoint in some files, for example: Just newly created ViewController and putting breakpoint on viewDidLoad method I get strange LLDB error
Internal error [IRForTarget]: Couldn't rewrite external variable _ZZ53
[EPGViewController($__lldb_category) $__lldb_expr:]E19$__lldb_expr_result
I tried googling for this error - can't find anything useful. Cleaning cache, restarting doesn't help.
Once more - this error I get not on all files. And I can't figure out why.
Thx for any help or tips!
Also, when I try to po some variable I get
(lldb) po self.title
error: Couldn't materialize struct: Structure hasn't been laid out yet
Internal error [IRForTarget]: Couldn't rewrite external variable _ZZ58-
[EventsEPGViewController($__lldb_category) $__lldb_expr:]E19$__lldb_expr_result
I ran into this error as well and spent a lot of time debugging it fruitlessly. It seems to be related to the breakpoint itself: I noticed that if I deactivated the breakpoint the error doesn't appear.
You might be able to just move the breakpoint to another line to suppress. This isn't the first clang bug I've run into, on XCode 4.3 'po' wouldn't even output variables reliably.
Change your designated debugger for that project from lldb to gdb and you're good.

Objective-C: Trying to use Apple's MultipleDetailView

I am working on trying to make a splitview based application. I am trying to use Apple's MultipleDetailView example code
http://developer.apple.com/library/ios/#samplecode/MultipleDetailViews/Introduction/Intro.html
I have never really used example code like this (I usually just atart from scratch). All i did was copy the code into the correct classes of my app, but when I try to run it on the simulator the app doesn't open.
I feel like I am maybe forgetting something obvious, since I didn't code it myself.
Thanks!
The usual debugging technique applies. Put a breakpoint somewhere early in the program -- the first line of main() for instance, and debug from there. Do you hit the breakpoint? If yes, move forward through the code until you find the line that causes the problem. If no, try to back up even further if you can, and also look for any clues as to what's going wrong. If the app is running at all, there should be some sort of error message in the console output.
"...the app doesn't open" doesn't tell us nearly enough to help you. Something like "the app delegate is instantiated, but it's window and splitViewController properties are nil" goes much further toward getting to the root of the problem.

xCode: Accessing properties of an object via console

Is it possible to access the properties of objects in xCode console?
If I try the following I get an error that he property doesn't exist.
po someObject.someprop
If I don't breakpoint the code and run the app it works fine so I know someObject.someprop exists. I don't think I have the grasp on xCode console yet? What I loved about Flex/Flash development is that I could set a break point and in the console window or variables view I could traverse every structure down to the ends of the earth.
I could see SomeDicionary[key].someArray[1].someObject.prop and it would show me the value. Is this not possible in xCode console or is there a trick to get to it?
You'll actually have to use the bracket syntax notation:
po [someObject someprop]
The debugger is sometimes very finnicky about syntax. This is filled with all sorts of helpful tips for debugging in XCode.
Just a side note, variables/properties declared in the implementation file (*.m) instead of the header file (*.h) can sometimes be invisible to the debugger variable list display depending on if the breakpoint is in that class's code, because of scope. Not necessarily required here, but useful to know seeing as how it is kind of relevant.

CCLabelBMFont crashing due to a missing image message

I'm getting an exception saying that the image cannot be nil on this line:
CCLabelBMFont *label = [CCLabelBMFont labelWithString:#"5" fntFile:#"weaponnumbers.fnt"];
What am I doing wrong? Am I supposed to specify the PNG somewhere different? I have it at the root of the project.
-(CCTexture2D*) addImage: (NSString*) path
{
NSAssert(path != nil, #"TextureCache: fileimage MUST not be nill");
Is weaponnumbers.fnt included in your target? E.g. is it compiled into the project?
Also, I think it's unlikely you're getting an exception here - you're probably getting an exception somewhere inside one of the calls made by this call. Try breakpointing the line before, and using the "Step In" breakpoint tool to step through the call stack and find the true nature of the exception.
I find Cocos2D exceptions to be pretty self-explanatory, when you can eventually get down to the right level of where the exception is actually being thrown.
A delete add and clean fixed it.
NSString stringWithContentsOfFile failing with what seems to be the wrong error code