对象使用问题?

时间:2011-07-22 06:09:18

标签: objective-c cocoa-touch

当我运行以下代码时,应用程序刚刚退出?

感谢...

#import <UIKit/UIKit.h>

@interface dogViewController : UIViewController {

}

@end

/////////////////////////////////////////

#import "dogViewController.h"
#import "puppy.h"


@implementation dogViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"start");

    puppy *w;
    int r = [w waldo];

    NSLog(@"%d",r);
}


- (void)dealloc {
    [super dealloc];
}

@end

////////////////////////////////////////

#import <Foundation/Foundation.h>


@interface puppy : NSObject {

}
-(int) waldo;
@end

///////////////////////////////////////

#import "puppy.h"


@implementation puppy
-(int) waldo{
    return (int)29;
}
@end

2 个答案:

答案 0 :(得分:2)

您似乎在没有实例化的情况下引用w。 为了能够将waldo发送到w,您需要分配并初始化它。

puppy *w = [[puppy alloc] init];
// now w is created so it you can call methods on it...
int r = [w waldo];

答案 1 :(得分:1)

puppy *w;

没有做任何有用的事情,它只是声明一个小狗变量。你必须实际初始化一个,例如:

puppy *w = [[puppy alloc] init];