我的第一个问题在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