我的第一個問題在stackoverflow所以請溫柔。我試過尋找答案,但我真的需要幫助。id類型實例變量發送消息到實例方法
的問題是與學習有關的尼爾·戈爾茨坦的Objective-C代表傻瓜
他有在Transaction.h
#import <Cocoa/Cocoa.h>
@class Budget;
@interface Transaction : NSObject {
Budget *budget;
double amount;
NSString *name;
id delegate;
}
//some init method
@end
@protocol TransactionDelegate
@required
- (void) spend: (Transaction *) aTransaction;
//additional optional method
@end
--
//然後在Transaction.m以下他有這個
#import "Transaction.h"
#import "Budget.h"
@implementation Transaction
@synthesize budget, delegate , amount;
- (void) spend {
if ([delegate respondsToSelector:@selector(spend:)])
[delegate spend:self];
}
- (id) initWithAmount: (double) theAmount forBudget: (Budget*) aBudget {
if (self = [super init]) {
budget = aBudget;
[budget retain];
amount = theAmount;
}
return self;
}
- (void) dealloc {
[budget release];
[super dealloc];
}
@end
我有問題了解花m Transaction.m文件中的方法
id類型實例變量是否可以在包含它的類中調用ANY方法? 我明白,respondsToSelector是一個NSObject方法,告訴編譯器一個方法是否已經實現。但是,如何委託id-type調用該方法?編譯器甚至不知道它是什麼對象...
請幫忙!
P.S.如果任何人對良好的Objective-C書籍有任何建議,我將非常感激。我想進入iPhone開發領域,但我想我需要先掌握Objective-C的基礎知識。
謝謝!
謝謝!哇,那是一個非常強大的功能。我的意思是我知道id類型是這個抽象對象類型,但不知道它可以調用它自己的類的方法。 – 2013-03-11 19:05:28