NSObjectCategory

Crowd-sourced documentation and tutorials by the Cocoa developer community
Jump to: navigation, search


NSObject category CocoaDevUsersAdditions:

NSObject +CocoaDevUsersAdditions.h

#import <Foundation/Foundation.h>

@interface NSObject (CocoaDevUsersAdditions)

// NOTE: results array contains instance of NSNull where result of performing selector is nil
// a collection here is anything responding to -objectEnumerator
- (void)performSelector:(SEL)aSelector withEachObjectFrom:(id)collection;
- (NSArray *)resultsOfPerformingSelector:(SEL)aSelector withEachObjectFrom:(id)collection;

- (void)log; //A **very** commonly used method, make it part of your default application project in PB or XC

- (id)arrayByAddingObject:(id)anObject; // a convenience for those of us who like to avoid special cases for collections

@end

NSObject+CocoaDevUsersAdditions.m

#import "NSObject+CocoaDevUsersAdditions.h"

@implementation NSObject (CocoaDevUsersAdditions)

- (void)performSelector:(SEL)aSelector withEachObjectFrom:(id)collection
{
    NSEnumerator *objectEnumerator = [collection objectEnumerator];
    id object;

    while(object = [objectEnumerator nextObject])
    {
       [self performSelector:aSelector withObject:object];
    }
}

- (NSArray *)resultsOfPerformingSelector:(SEL)aSelector withEachObjectFrom:(id)collection
{
    NSEnumerator *objectEnumerator = [collection objectEnumerator];
    NSMutableArray *results = [NSMutableArray array];
    id object, result;

    while(object = [objectEnumerator nextObject])
    {
        result = [self performSelector:aSelector withObject:object];
        if (result == nil)
            result = [NSNull null];
        [results addObject:result];
    }
    return results;
}

- (void)log
{
    NSLog(@"%@",self);
}

- (id)arrayByAddingObject:(id)anObject
{
    return [NSArray arrayWithObjects:self, anObject, nil]; // NSArray will still behave normally, too
}
@end

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox