1. ここでは、A の既存のインスタンスにアクセスして B インスタンス内の配列をフェッチする代わりに、単純に A の新しいインスタンスを作成しています。それだけがnull値を示しているように。
2. 2 番目の質問については、このコードを参照してください....
ClassA.h
@interface ClassA:UIViewController
@property (nonatomic, retain) NSMutableArray *arrayOfPaths;
@end
ClassA.m
@implementation ClassA
@synthesize arrayOfPaths = _arrayOfPaths;
-(id)init
{
self = [super init];
if(self)
{
self.arrayOfPaths = [[NSMutableArray alloc] initWithObjects:@"1",@"2", nil];
//Delegation process
ClassB *bInstance = [[ClassB alloc] init];
[bInstance setAReference:self];
//Do your stuff of presenting ClassB instance here.....
}
}
@end
ClassB.h
#import "ClassA.h"
@interface ClassB:UITableViewController
@property (nonatomic, copy) ClassA *aReference;
@end
ClassB.m
@implementation ClassB
@synthesize aReference = _aReference;
-(void)viewDidLoad
{
NSLog(@"Array from class ClassA %@", self.aReference.arrayOfPaths);
}
@end
ClassB ViewController は、ここでのみ ClassA によってインスタンス化する必要があります。
3. 要件を達成するには、代理人の概念を使用する必要があります。上記のコード例を参照してください
4. 目的 -c は多重継承をサポートしません。