soy principiante en iPhone development.I estaba tratando este programa muestra a continuación.Constructor en Objective C
No estoy llamando al + (void) inicializar y - método init (id) en la clase B.But su recibiendo llamadas de forma automática.
¿El - (void) intialise es igual al constructor por defecto en C objetiva
¿Tiene los puntos [Super init] a la NSObject.
Si no estoy usando el método init - (id) recibo una advertencia de que la clase tiene una implementación incompleta.
ClassA.h
#import <Foundation/Foundation.h>
static int ab;
@interface ClassA : NSObject {
int a;
}
+ (void) initialize;
- (id) init;
- (void) displayNumOfInstance;
- (void) disp;
@end
ClassA.m
#import "ClassA.h"
@implementation ClassA
+ (void) initialize
{
ab=0;
}
- (id) init
{
self = [super init];
if (self!=nil) {
ab++;
}
return self;
}
- (void) displayNumOfInstance
{
NSLog(@"Number of instances of this class:%d",ab);
}
- (void) disp
{
NSLog(@"The value is %d",ab);
}
@end
ClassB.h
#import <Foundation/Foundation.h>
#import "ClassA.h"
@interface ClassB : ClassA {
}
- (void) display;
@end
ClassB.m
#import "ClassB.h"
@implementation ClassB
- (void) display
{
ab=20;
NSLog(@"The value ab is %d",ab);
}
@end
class2.m
#import <Foundation/Foundation.h>
#import "ClassA.h"
int main (int argc, const char * argv[]) {
ClassA *a = [[ClassA alloc]init];
[a disp];
[a release];
ClassB *b = [[ClassB alloc]init];
[b display];
[b release];
ClassA *a1 = [[ClassA alloc]init];
[a1 disp];
[a1 release];
ClassB *b1 = [[ClassB alloc]init];
[b1 display];
[b1 release];
return 0;
}
de salida:
2011-04-30 15:31:42.490 class2[1674:a0f] 1
2011-04-30 15:31:42.493 class2[1674:a0f] The value ab is 20
2011-04-30 15:31:42.494 class2[1674:a0f] 2
2011-04-30 15:31:42.495 class2[1674:a0f] The value ab is 20