※ ChatGPTを利用し、要約された質問です(原文:objective-c のインスタンスについて教えていただきたいのですが)
Objective-Cでのインスタンス化について
このQ&Aのポイント
Objective-Cでは、複数のクラスをインスタンス化してメソッドを送信することができますが、一部の実装方法について質問があります。
具体的には、aインスタンスがbクラスをインスタンス化し、bインスタンスがcクラスをインスタンス化して、aインスタンスが直接cクラスをインスタンス化せずに、bインスタンスがインスタンス化したcインスタンスに対してメソッドを送信する方法です。
このような要件を満たす方法について、ご教示いただけないでしょうか?宜しくお願いします。
objective-c のインスタンスについて教えていただきたいのですが
初心者なのですみません。
ご存知の方教えていただきたいのですが、
例えばaインスタンスがbクラスをインスタンス化して
bインスタンスがcクラスをインスタンス化して
aインスタンスがcクラスをインスタンス化しないで
bインスタンスがインスタンス化したcインスタンスに
メソッド送信のようなことが
したいのですがうまくいきません。
どのようにすればよいですか?
よろしくお願いします
(aインスタンスがcクラスをインスタンス化した場合、bインスタンスがcクラスをインスタンス化したものと同じもの(アドレスが同じ?)なものなのでしょうか?違いますよね?ようするにストレージクラスやNSDataなどインスタンスの中のデータを複数のインスタンスから取り出したいのです)
面倒でスミマセン。
以下は確認のために簡易的に作ったものです。
文字数多すぎなのでinterfaceは省きました
#import "Aobject.h"
#import "Bobject.h"
#import "Cobject.h"
@implementation Aobject
- (IBAction)callb:(id)sender
{
id Bobj = [[Bobject alloc]init];
[Bobj make];
[Cobj log]; //ここでエラーが出ます(`Cobj' undeclared (first use in this function) (Each undeclared identifier is reported only once for each function it appears in.))
}
@end
//--------------------------------------
#import "Bobject.h"
#import "Cobject.h"
@implementation Bobject
- (void)make
{
id cobj = [[Cobject alloc]init];
}
@end
//--------------------------------------
#import "Cobject.h"
@implementation Cobject
- (void)log
{
NSLog(@"ok");
}
@end
お礼
ありがとうございます参考になりました。