Is there a way to access a method from an other class without creating an object in Objective-C?
            Asked
            
        
        
            Active
            
        
            Viewed 746 times
        
    2
            
            
        - 
                    1Yes, class methods? You add `+` instead of `-` infront of method declarations and then you can invoke it like `[MyClass myMethod];` – LuckyLuke Nov 16 '12 at 15:27
- 
                    How is it? could u tell about it ? – emy Nov 16 '12 at 15:29
- 
                    Google class methods in objective c. They are methods that belong to the class instance rather then an object of a particular class. – LuckyLuke Nov 16 '12 at 15:30
- 
                    1you should give NSNotificationCenter a try: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html – CarlJ Nov 16 '12 at 15:37
3 Answers
8
            
            
        @interface APotentiallyBadIdea : NSObject
+ (void)potentiallySillyUnmooredMethod:(NSString *)string;
@end
@implementation APotentiallyBadIdea
+ (void)potentiallySillyUnmooredMethod:(NSString *)string {
    NSLog(@"ask yourself why this isn't on a real object %@", string);
}
@end
Call it like this:
[APotentiallyBadIdea potentiallySillyUnmooredMethod:@"this might be ok if it's part of a more complete object implementation"];
 
    
    
        danh
        
- 62,181
- 10
- 95
- 136
5
            I suspect you are really looking for class methods; Objective-C's equivalent to other languages' static methods. See: What is the difference between class and instance methods?
To define one:
@implementation MONObject
+ (void)classMethod { ... }
@end
In use: [MONObject classMethod]
If you want the instance method as a callable C function, see class_getInstanceMethod, or simply IMP imp = [MONClass instanceMethodForSelector:@selector(someSelector)];.
2
            
            
        Use + sign to define the method which would make it static method, accessible via class name like this
in .h file
+ (void) someMethod;
in .m file
+ (void) someMethod {}
than you can easily access it via class name in another file
[ClassName someMethod];
Note: don't forget to import that class.
 
    
    
        Asif Mujteba
        
- 4,596
- 2
- 22
- 38
- 
                    1There's no such thing as a static method in Objective-C. Methods prefixed with a `+` are class methods, which is something entirely different. – jlehr Nov 16 '12 at 17:15
 
     
     
    