A few people were asking me about how Objective C and its syntax stand out. Common questions came up about Objective C’s properties and synthesize, bracket and dot notation, and function and argument naming, and the class naming with 2 or 3 letter prefixes.
Here’s a quick comparison to give a developer that’s new to Objective C a 2 minute run-through of some syntax differences. I recommend going straight to the code below for your favorite language, and then reading the equivalent Objective C code.
And here’s the equivalent PDF with a nicer side-by-side view.
Objective C
{code}
// ASVSquare.h
@interface ASVSquare : ASVShape {
@private int _width;
} @property (assign) int width; + (NSString *)summaryInfo;
- (void)draw;
- (void)drawInRect:(CGRect *)rect withBackgroundColor:(CGColor *)color; @end
// ASVSquare.m
@implementation ASVSquare @synthesize width = _width; + (NSString *)summaryInfo { ... }
- (void)draw { ... }
- (void)drawInRect:(CGRect *)rect withBackgroundColor:(CGColor *)color { ... }
@end
// Usage
import "ASVSquare.h" ASVSquare *mySquare = [[ASVSquare alloc] init]; mySquare.width = 5;
NSLog(@”%d”, mySquare.width);
[mySquare draw];
[mySquare drawInRect:someRect withBackgroundColor:someColor];
NSLog(@”%@”, [ASVSquare summaryInfo]);
[mySquare release];
C++
{code}
// Square.cpp
namespace Appssavvy;
class Square : public Shape {
private: int _width;
public: int getWidth() { return _width; }
void setWidth(int newWidth) { _width = newWidth; }
void draw() { ... }
void draw(CGRect *rect, CGColor *backgroundColor) { ... }
static MyString * summaryInfo { ... }
}
// Usage
using namespace Appssavvy;
include "Square.h"
Square *mySquare = new Square();
mySquare->setWidth(5);
mySquare->draw();
mySquare->draw(rect, color);