我檢查了Google,但我還沒有找到任何有用的信息。 我正在Objective-C中編寫一個堆棧類,堆棧基於NSMutableArray,但是,我無法向它添加任何對象,也沒有在控制檯中拋出任何錯誤,並且沒有編譯警告/錯誤。這是我的堆棧對象的代碼。無法添加對象到NSMutableArray
#import "Stack.h"
@implementation Stack
@synthesize stack;
- (id)init {
self.stack = [[NSMutableArray alloc] init];
return self;
}
- (void)push:(id)object { [self.stack addObject:object]; }
- (int)size { return [self.stack count]; }
- (id)pop {
id obj = [[[self.stack lastObject] retain] autorelease];
[self.stack removeLastObject];
return obj;
}
- (id)peek { return [self.stack lastObject]; }
@end
頁眉:
#import <Cocoa/Cocoa.h>
@interface Stack : NSObject {
NSMutableArray *stack;
}
- (void)push:(id)object;
- (int)size;
- (id)pop;
- (id)peek;
@property (nonatomic, retain) NSMutableArray *stack;
@end
對於代碼的其餘部分,如果我叫[test_stack大小],它返回零,不管多少次,我推的對象,如果我叫流行或偷看,它只是返回(空)。
#import "TRIAL_Stack_Ctrl.h"
@implementation TRIAL_Stack_Ctrl
@synthesize test;
- (IBAction)push:(id)sender {
[test_stack push:[input stringValue]];
}
- (IBAction)pop:(id)sender {
[label setStringValue:[NSString stringWithFormat:@"%@", [test_stack pop]]];
}
- (IBAction)peek:(id)sender {
[label setStringValue:[NSString stringWithFormat:@"%@", [test_stack peek]]];
}
- (IBAction)size:(id)sender {
[label setStringValue:[NSString stringWithFormat:@"%d", [test_stack size]]];
}
@end
這使我相信它不推動對象,有什麼我做錯了嗎?
您的'test_stack'變量是'nil',這是您所看到的症狀(從消息返回的零和nils)。有關理由,請參閱下面的答案。 – 2010-07-01 22:28:51