背景:私はObjective-C/Cocoaの経験がない.NETの人ですが、Aaron Hillegassの著書「Cocoa Programming for Mac OS X "の基礎を掴もうとしている。 (これまでの素晴らしい本、BTW!)オプションのサイドチャレンジの1つを完了する目的で、私はユーザーが任意の場所に楕円を描画できるようにするドキュメントベースのアプリケーションを作成しています。しかし基本的なObj-C質問:オブジェクトのメソッドの呼び出し
// in OvalView.m
@synthesize ovals;
// in OvalDrawDocument.m
[myOvalView setOvals:loadedOvals]; // setter?
NSMutableArray *ovalsToSave = [myOvalView ovals]; // getter?
:OvalDrawDocument
私はそうのようovals
のために自動生成されたプロパティアクセサを使用しようとしているの実装では
@interface OvalDrawDocument : NSDocument
{
IBOutlet OvalView* myOvalView;
}
@end
@interface OvalView : NSView {
NSMutableArray *ovals;
}
@property (readwrite, assign) NSMutableArray *ovals;
@end
次のように
私は、インターフェイスを2つのクラスを持っていますコンパイラは、メソッドが見つからないことを警告し、実行時にも機能しません。彼らはCode Senseに登場しますが、実際には何も意味がないと思います(XCode/VSの違いに慣れています)Obj-Cという概念があります。事実、myOvalView
もIBOutlet
ですが、私はかなり失われています。私は何をしなければならないのですか?そしてさらに重要な理由は何ですか?
更新:私はOvalDrawDocument.mでOvalView.hを宣言しませんでした。そうすることで、コンパイルの警告が修正されました。しかし、保存と読み込みはまだ機能していないように見えますが、理由を把握できません。
リクエストに応じて、オンラインで完全なソースコードを投稿しました。BrowseまたはDownload (59KB zip)です。
は@implementation OvalViewブロック内の@synthesizeの楕円ですか? – stefanB
問題がどこにあるかわかるようにファイル全体を投稿してください。ほとんどの場合、間違った場所に何かがありますが、インポートされていないか宣言されていませんが、あなたが投稿したものからは分かりません。 IBOutlets/IBActionsはコードに影響を与えません。コンパイル時に除外されます。 Xcodeは適切な接続を行い、それらを削除します。 –
ただ、オブジェクトやプロパティを扱うときに割り当てるのではなく、保持しておくことをお勧めします。 –