ftp.nice.ch/Attic/openStep/implementation/gnustep/sources/objcX-0.87.tgz#/objcX-0.87/foundation/NSObject.h

This is NSObject.h in view mode; [Download] [Up]

/* Interface for NSObject class
 *
 * Copyright (C)  1994  The Board of Trustees of  
 * The Leland Stanford Junior University.  All Rights Reserved.
 *
 * Author: Paul F. Kunz
 *
 * This file is part of an Objective-C class library
 *
 * Based on:
 * (Preliminary Documentation) Copyright (c) 1994 by NeXT Computer, Inc.  
 * All Rights Reserved.
 *
 * NSObject.h,v 1.3 1995/03/28 23:56:09 fedor Exp
 */
 
#ifndef __NSObject_INCLUDE_GNU
#define __NSObject_INCLUDE_GNU

#ifdef __NeXT__
#include <objc/objc.h>
#else
#include <objc/objc-api.h>
#endif

#include "nsTimer.h"
#include <foundation/zone.h>

@class NSArchiver, NSCoder, NSMethodSignature, NSString, Protocol; 

@protocol NSObject

// NSObject protocol

// Identifying and Comparing Instances

- (unsigned)hash;
 /*
  * Returns an unsigned integer that can be used as a table address in a hash
  * table structure. Two objects that are equal must hash to the same value. 
  */
 
- (BOOL)isEqual:(id)anObject;
 /*
  * Returns YES if the receiver and anObject have equal values; otherwise
  * returns NO. 
  */
 
- (id)self;
 /*
  * Returns the receiver. 
  */

// Identifying Class and Superclass

- (Class)class;
 /*
  * Returns the class object for the receiver's class. 
  */

- (Class) superclass;
 /*
  * Returns the class object for the receiver 's superclass. 
  */

// Determining Allocation Zones

- (NSZone *)zone;
 /*
  * Returns a pointer to the zone from which the receiver was allocated. 
  */

// Sending Messages Determined at Run Time

- (id)perform:(SEL)aSelector;
 /*
  * Sends an aSelector message to the receiver and returns the result of the
  * message. If aSelector is null, an NSInvalidArgumentException is raised. 
  */
 
- (id)perform:(SEL)aSelector
   withObject:(id)anObject;
 /*
  * Sends an aSelector message to the receiver with anObject as an argument.
  * If aSelector is null, an NSInvalidArgumentException is raised. 
  */
		
- (id)perform:(SEL)aSelector
   withObject:(id)anObject
   withObject:(id)anotherObject;
 /*
  * Sends the receiver an aSelector message with anObject and anotherObject
  * as arguments. If aSelector is null, an withObject:(id)anotherObject
  * NSInvalidArgumentException is raised. 
  */

// Identifying Proxies

- (BOOL)isProxy;
 /*
  * Returns YES to indicate that the receiver is an NSProxy, rather than an
  * object that descends from NSObject. Otherwise, it returns NO. 
  */


// Testing Inheritance Relationships

- (BOOL)isKindOfClass:(Class)aClass;
 /*
  * Returns YES if the receiver is an instance of aClass or an instance of
  * any class that inherits from aClass. Otherwise, it returns NO. 
  */
 
- (BOOL)isMemberOfClass:(Class)aClass;
 /*
  * Returns YES if the receiver is an instance of aClass. Otherwise, it
  * returns NO. 
  */

// Testing for Protocol Conformance

- (BOOL)conformsToProtocol:(Protocol *)aProtocol;
 /*
  * Returns YES if the class of the receiver conforms to aProtocol, and NO if
  * it doesn't. 
  */

// Testing Class Functionality

- (BOOL)respondsToSelector:(SEL)aSelector;
 /*
  * Returns YES if the receiver implements or inherits a method that can
  * respond to aSelector messages, and NO if it doesn't. 
  */

// Managing Reference Counts

// - (id)autorelease;
 /*
  * As defined in the NSObject class, decrements the receiver's reference
  * count. When the count reaches 0, adds the object to  the current
  * autorelease pool. Returns self. Objects in the pool are released later,
  * typically at the top of the event loop. 
  */
  
// - (oneway void)release;
 /*
  * As defined in the NSObject class, decrements the receiver's reference
  * count. When the count reaches 0, the object is automatically deallocated
  * immediately. 
  */
 
// - (id)retain;
 /*
  * As defined in the NSObject class, retain increments the receiver's
  * reference count. You send an object a retain message when you want to
  * prevent it from being deallocated without your express permission.
  * Returns self. 
  */
 
// - (unsigned)retainCount;
 /*
  * Returns the receiver's reference count for debugging purposes. 
  */

// Describing the Object

// - (NSString *)description;
 /*
  * Returns a human readable description of the receiver. 
  */

@end

@protocol NSCoding
- (void)encodeWithCoder:(NSCoder *)aCoder;
 /*
  * Serializes the receiver using aCoder. 
  */
 
- (id)initWithCoder:(NSCoder *)aDecoder;
 /*
  * Initializes new instance from data in aDecoder. 
  */
 
@end


@interface NSObject <NSCoding, NSObject>

{
    struct objc_class *isa;	/* NeXT's 'Class' includes the '*' */
}


// Initializing the Class

+ (void)initialize;	
 /*
  * Initializes the class before it's used (before it receives its first
  * message). 
  */

// Creating and Destroying Instances

+ (id)alloc;
 /*
  * Returns a new, uninitialized instance of the receiving class.  
  */
 

+ (id)allocWithZone:(NSZone *)zone;
 /*
  * Returns a new, uninitialized instance of the receiving class in zone. 
  */
 
+ (id)new;
 /*
  * Allocates a new instance of the receiving class, sends it an init
  * message, and returns the initialized object returned by init. 
  */
 
- (id)copy;
 /*
  * Invokes copyWithZone:. 
  */
 

- (void)dealloc;
 /*
  * Deallocates the memory occupied by the receiver. 
  */
 
- (id)init;
 /*
  * Implemented by subclasses to initialize a new object (the receiver)
  * immediately after memory for it has been allocated. 
  */

- (id)mutableCopy;
 /*
  * Invokes mutableCopyWithZone:. 
  */

// Identifying Classes

+ (Class)class;
 /*
  * Returns self.  Since this is a class method, it returns the class object. 
  */
 
+ (Class)superclass;
 /*
  * Returns the class object for the receiver's superclass. 
  */

// Testing Class Functionality

+ (BOOL)instancesRespondToSelector:(SEL)aSelector;
 /*
  * Returns YES if instances of the class are capable of responding to
  * aSelector messages, and NO if they're not. 
  */

// Testing Protocol Conformance

// + (BOOL)conformsToProtocol:(Protocol *)aProtocol;
 /*
  * Returns YES if the receiving class conforms to aProtocol, and NO if it
  * doesn't. 
  */

// Obtaining Method Information

+ (IMP)instanceMethodForSelector:(SEL)aSelector;
 /*
  * Locates and returns the address of the implementation of the aSelector
  * instance method. 
  */
	
- (IMP)methodForSelector:(SEL)aSelector;
 /*
  * Locates and returns the address of the receiver's implementation of the
  * aSelector method, so that it can be called as a function. 
  */
 
// - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector;
 /*
  * Returns an object that contains a description of the aSelector method, or
  * nil if the aSelector method can't be found. 
  */

// Describing Objects

// + (NSString *)description;
 /*
  * Subclasses override this method to return a human-readable string
  * representation of the contents of the receiver.  NSObject's
  * implementation simply prints the name of the receiver's class. 
  */

// Posing

+ (void)poseAsClass:(Class)aClass;
 /*
  * Causes the receiving class to ªpose asº its superclass. 
  */

// Error Handling

- (void)doesNotRecognizeSelector:(SEL)aSelector;
 /*
  * Handles aSelector messages that the receiver doesn't recognize. 
  */

// Sending Messages Determined at Run Time 

// + (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget
//         selector:(SEL)aSelector
//          object:(id)anObject;
 /*
  * Cancels previous perform requests having the same target and argument (as
  * determined by isEqual:), and the same selector.   This method removes
  * timers only in the current run loop, not all run loops. 
  */
		
// - (void)performSelector:(SEL)aSelector
//                 object:(id)anObject
//             afterDelay:(NSTimeInterval)delay;
 /*
  * Sends an aSelector message to anObject after delay.  self and anObject
  * are retained until after the action is executed. 
  */

// Forwarding Messages

// - (void)forwardInvocation:(NSInvocation *)anInvocation
 /*
  * Implemented by subclasses to forward messages to other objects. 
  */

// Archiving

- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder;
 /*
  * Implemented by subclasses to reinitialize the receiver.  The NSObject
  * implementation of this method simply returns self. 
  */
	
- (Class)classForArchiver;
 /*
  * Identifies the class to be used during archiving.   NSObject's
  * implementation returns the object returned by classForCoder:. 
  */
 
- (Class)classForCoder;
 /*
  * Identifies the class to be used during serialization.  An NSObject
  * returns its own class by default. 
  */
 
- (id)replacementObjectForArchiver:(NSArchiver *)anArchiver;
 /*
  * Allows an object to substitute another object for itself during
  * archiving.  NSObject's implementation returns the object returned by
  * replacementObjectForCoder:. 
  */

- (id)replacementObjectForCoder:(NSCoder *)anEncoder;
 /*
  * Allows an object to substitute another object for itself during
  * serialization.  NSObject's implementation returns self. 
  */
	
+ (void)setVersion:(int)version;
 /*
  * Sets the class version number to version. 
  */
 
+ (int)version;
 /*
  * Returns the version of the class definition. 
  */
  

@end

@protocol NSCopying

// Copying Objects 

- (id)copyWithZone:(NSZone *)zone;
 /*
  * Returns a new instance that's a functional copy of the receiver. Memory
  * for the new instance is allocated from zone. For collections, creates a
  * deep (recursive) copy. 
  */

@end


@protocol NSMutableCopying

// Making Mutable Copies of Objects

- (id)mutableCopyWithZone:(NSZone *)zone;
 /*
  * Returns a new instance that's a top level, mutable copy of the receiver.
  * For a collection, objects in the collection are retained. Memory for the
  * new instance is allocated from zone. 
  */

@end

#endif

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.