I like this letter because of the last sentence:
Perhaps Adobe should focus more on creating great HTML5 tools for the future, and less on criticizing Apple for leaving the past behind
Perhaps Adobe should focus more on creating great HTML5 tools for the future, and less on criticizing Apple for leaving the past behind
#import <Cocoa/Cocoa.h>
@interface MyNSController : NSObject {
}
- (IBAction)doSlider:(id)sender;
- (IBAction)doButton:(id)sender;
- (IBAction)doMenu:(id)sender;
@end
#import "MyNSController.h"
@implementation MyNSController
- (IBAction)doSlider:(id)sender
{
float value = [sender floatValue];
NSLog(@"Do Slider. Value = %f", value);
}
- (IBAction)doButton:(id)sender
{
NSLog(@"Do Button");
}
- (IBAction)doMenu:(id)sender
{
NSLog(@"Do Menu");
}
@end
@interface DoButton : NSButtonCell {
}
- (IBAction)DoSomething:(id)sender;
@end
#import <Foundation/Foundation.h>Here is the program output:
@interface First : NSObject
{
int x;
}
- (void)printX;
- (void)setX:(int)value;
@end
@implementation First
+ (void)load
{
NSLog(@"First +load");
}
+ (void)initialize
{
NSLog(@"First. +initialize");
}
- (void)printX
{
NSLog(@"First -printX");
NSLog(@"x=%i", x);
}
- (void)setX:(int)value
{
NSLog(@"First -setX");
x = value;
}
@end
@interface Second : NSObject
{
}
@end
@implementation Second
+ (void)load
{
NSLog(@"Second +load");
}
+ (void)initialize
{
NSLog(@"Second initialize");
}
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Program starts");
First *first = [First new];
[first printX];
[first setX: 123];
[first printX];
[first release];
[pool drain];
return 0;
}