我是iPhone开发人员的初学者。我正在尝试下面的示例程序。目标C中的构造函数C
我没有在B类中调用+(void)初始化和 - (id)init方法,而是自动调用它。
是的 - (空)intialise等于默认的构造函数在客观C.
请问[超级初始化]指向NSObject的。
如果我不使用 - (id)初始化方法,我得到一个警告,说这个类是不完整的实现。
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;
}
输出:
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