Skip to content

Instantly share code, notes, and snippets.

@McZonk
Created April 3, 2013 08:46
Show Gist options
  • Save McZonk/5299540 to your computer and use it in GitHub Desktop.
Save McZonk/5299540 to your computer and use it in GitHub Desktop.
#import <Foundation/Foundation.h>
@interface MyObject : NSObject
- (id)initWithName:(NSString*)name;
@property (nonatomic, retain) NSString* name;
@end
@implementation MyObject
- (id)initWithName:(NSString*)name {
self = [self init];
if(self != nil) {
self.name = name;
NSLog(@"> %@ %lu init", self.name, self.retainCount);
}
return self;
}
- (void)dealloc {
self.name = nil;
[super dealloc];
}
- (id)retain {
id r = [super retain];
NSLog(@"> %@ %lu retain", self.name, self.retainCount);
return r;
}
- (oneway void)release {
NSString* name = [self.name retain];
NSUInteger retainCount = self.retainCount - 1;
[super release];
NSLog(@"> %@ %lu release", name, retainCount);
[name release];
}
- (id)autorelease {
id r = [super autorelease];
NSLog(@"> %@ %lu autorelease", self.name, self.retainCount);
return r;
}
@end
int main(int argc, const char** argv) {
@autoreleasepool {
NSMutableArray* array = [[NSMutableArray alloc] init];
{
MyObject* object = [[MyObject alloc] initWithName:@"A"];
[array addObject:object];
[object release];
}
{
MyObject* object = [[MyObject alloc] initWithName:@"B"];
[array addObject:object];
[object release];
}
NSLog(@"Created objects");
for(MyObject* object in array) {
NSLog(@"%@", object);
}
NSLog(@"Enumerated objects");
NSUInteger count = array.count;
for(NSUInteger i = 0; i < count; ++i) {
MyObject* object = [array objectAtIndex:i];
NSLog(@"%@", object);
}
NSLog(@"Looped objects");
[array release];
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment