2011-07-22 8 views
0

私は次のコードを実行すると、アプリはちょうど脱落ですか?オブジェクト使用の問題?

おかげで...

#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 

答えて

1
puppy *w; 

は何も有効ではありません、それだけで子犬の変数を宣言します。たとえば、次のように初期化する必要があります。

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

インスタンス化せずに参照元のように見えます。 waldoをwに送るには、allocしてinitする必要があります。

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

ここにポイントがあります –

関連する問題