class間傳訊息:2011年05月10日星期二
有aClass及bClass,假設AClass會BClass *myBClass = [[BClass alloc] init];因此,可用myBClass去call任何BClass內method因而達到AClass傳訊息給BClass的目的。但是,如何在BClass內傳訊息給AClass呢?
困難原因:BClass內沒有AClass這receiver。
解法:
Aclass.h
@interface AClass{ NSString *stringInA; }
@property (nonoatomic, copy) NSString *stringInA;
@end
AClass.m
#include "AClass.h"
#include "BClass.h"
@implemetation AClass
@synthesize staringInA;
-(void)loadView{ BClass *myBClass = [[BClass alloc] init:self]; }
@end
Bclass.h
@interface BClass{ id myADelegate; }
-(id) init: (id) aDelegeate;
@end
BClass.m
#include "BClass.h"
#include "AClass.h"
@implemetation aClass
-(id) init: (id) aDelegeate
{
id self = [super init];
myADelegate = aDelegate; //將AClass的instance存起來
myADelegate.stringInA = @"將String傳給AClass";
}
-(void)loadView{ .... }
@end
以上程式的重點在於在AClass.m中第5行,BClass *myBClass = [[BClass alloc] init:self];將self傳給BClass,BClass.m的第7行可將此aDelegate存起來,也可在第8行使用它,總之,即可用此argument來reference AClass。