1) Using Categories to add new methods for a class without modification to original source code.
2) Using Categories to implement private method.
3) Dynamic types.
4) Polymorphism: Use pose or type of id to implement polymorphism (id is a special type which can be any type of object C);
Pose: Use subclass as superclass.
Syntax: [PoseAClass poseAsClass: [AClass class]];Once you pose a class(A) as B, then all A will replaced by B. With this way, you can overload method.
5) Protocols: Like interface of Java or purely virtual class of C++.
You can use it to implement interface.
Syntax: @protocol ProtocolA -(void) aMethod; @endYou can implement more than one protocols like this:@interface ClassA: NSObject <ProtocolA> @end@implementation ClassA@end-(void) aMethod { //Do something }
@interface ClassA: NSObject <ProtocolA, ProtocolB, ProtocolC> @end
And you can use
conformsToProtocolto check whether an class(object) conforms a protocol like this:
if ( [comp conformsToProtocol: @protocol( ProtocolA)] == YES ) { printf( "comp conforms to ProtocolA\n" ); }
6) Retain/Release : method of NSObject which used to increase/decrease ref count. Once the ref count is 0, dealloc method will be called.
7) It's unnecessary to check pointer valid, for in Object C, NULL pointer(nil) can be accessed as welll.
8) If your class/object contains any other object(class), you need to release them by yourself in the way of overloading dealloc method like this:
-(void) dealloc { [first release]; [last release]; [email release]; [super dealloc]; }
In your set method, you must keep following steps:
a)Retain
b)release
c) set value.
//Sample: -(void) setFirst: (NSString*) f { [f retain]; [first release]; first = f; }