In rare circumstances, you may run into an assertion with REALbasic 2008r2 and higher that deals with something called "object definitions." These assertions all look very similar, like this: failed assertion in commonruntime.cpp:XXXX Someone called ObjectIsa, passing in an ObjectDefinition that we could not lookup. The object we're looking for is: YYYYY For instance, you may run into this assertion on the Mac if you have a menubar for the application which does not contain an item whose super is QuitMenuItem. In that case, it'll say the object we're looking for is QuitMenuItem. Thankfully, these assertions are trivial to work
May 2008 Archives
A new language feature popped up in 2008r2 with very little fanfare, but is actually a really awesome new capability. Interface aggregation is the ability to aggregate several interfaces together into a "super interface." For instance: Interface Test Sub Foo() End Interface Interface Awesome Sub Bar() End Interface Interface Sweet Aggregates Test, Awesome Sub Blah() End Interface In this example, we have three interfaces that contain a single method each. If a class were to implement the Test interface, then it would be required to implement just the method Foo. However, if the class were to implement the Sweet interface,
It's pretty strange to be happy about a bug reporting system, but I can't help myself! FogBugz really does rock -- I know there are some people who don't care for all of the particulars of it, but trust me when I say that the features it provides really knock the socks off the old feedback system. I could go on for pages about how awesome it makes our internal processes, and how much time it saves me, etc. But you probably don't care too much about that. Instead, I want to tell you about how awesome it is for
REALbasic 2008 Release 2 had a very important change that people are discussing with regards to the way executables are built on Windows. In previous versions of REALbasic, all of your applications were single-file executables. On Windows and this has changed. Now, if you use plugins (internal or otherwise), you get a folder that contains a bunch of DLLs. I want to discuss this change a bit to hopefully clear some points of confusion up. First and foremost, this wasn't a decision that was made lightly. Trust me when I say, if there was a reasonable alternative, we'd have taken
Here's the source code: if &hFFFFFFFF > 0 then break else break end if (Of course, you can ignore the constants -- this happens with variables as well. Imagine u as being a UInt32 whose value is 0xFFFFFFFF, and i as being an Int32 whose value is 0; you'll get the identical behavior either way.) When you run this code, you'll get results that seem a little strange at first blush. You get into the else clause -- so the compiler is generating code that says a large unsigned number is less than 0. How's that possible?? Well, what the
One of the new features of REALbasic 2008r2 is the concept of "Pairs", and I wanted to take a little bit of time to discuss them. The concept of a pair is something that comes up frequently in programming. As REALbasic programmers, you're undoubtedly familiar with the Dictionary class. That's just a fancy way to store pairs of information -- keys and values. However, it doesn't afford you an easy way to describe a single key/value pair as its own entity. That's what makes the new Pair class a very interesting concept. Let's start out on the simple side of
I could have sworn that I blogged on this topic before, but a peek at my backlog shows that I've not. I'll be dipped! Please accept my apologies about how this posting rambles on... I've had about eight hours of sleep in the past three days (I hate traveling), and so I'm rather incoherent. ByRef and ByVal are two modifiers used with parameter list declarations that allow you to specify the way the arguments are treated by the compiler. On the face of things, when you pass something "ByVal", you are passing it "by value", and when you pass something