Hi! This is a question and any help would be great Let me explain what I want to do I have
MyCustomClass looks like this
@interface MyCustomClass : NSObject { float a; } //OLD -(float)Returna; // Obvioulsy it returns a //update : -(float)ReturnA; // Obvioulsy it returns a
@end
MyDocument.h looks like
@interface MyDocument : NSDocument { MyCustomClass myClass; } -(float)returnA; // this method here return [myClass returnFloat]; @end
MyView.h looks like this
@interface MyView : NSView { IBOutlet id *doc // I then linked this outlet via IB to the MyDocument (First responder) }
The problem that I encounter is that I cannot use the method [doc returnA] from myView. it looks like at the compilation, the Objc Compiler don’t find the instance method , then don’t allocate a return value placeholder.
Is anybody knows of a solution ?
Thank you
–Francois
Must we continue to use “My” everywhere? – MikeTrent
Agreed. “my” pretty pointless, and pretty juvenile. // should I use “your” ? –Francois
Disagree. “my” is a namespace!
I hope this isn’t your real code, since [doc returnA] is doing a [myClass returnFloat] but you only have a Returna in myCustomClass (wrong name, and your capitalization conventions are inconsistent). Assuming you’re invoking [doc returnA] and that method actually exists, that should work. You’ll get a compiler warning since you declared “doc” in your view as an id, rather than a MyDocument. Stick in a @class MyDocument; and change your “id *doc” to “MyDocument *doc”, and hopefully it should work.
** For the records, id is already a pointer, so id is a pointer to an object pointer.* **
I made a capitalization mistake writing this code on the discussion forum. The Compiler returned an error (and not a warning ) since the “id * is a pointer to an object pointer”. Thanks for your comment. Using “@class MyDocument MyDocument *doc” produce the exact same error ( this is why I asked for Help )
I solved this by doing the following
Conclusion : This new code looks definitively more like ObjC.
Thanks to all. – Francois
@class MyDocument MyDocument *doc should produce an error, since it’s bad syntax. Put @class MyDocument; somewhere at the start of the file, then in your object structure, have MyDocument *whatever.
I will agree “my” is a namespace, but one that should never be used. to elaborate, names like “MyDocument” and “ReturnA” are useless because they’re made without context. Of course you would never use them in real code (right?) but it begs the question why should we pollute our learning materials with examples that shouldn’t be used? Why not define some context, such as “TextDocument” and “- (id)text;” and let the reader figure out how the example relates in their own situation? I.e., each by real-world example, not teach by FillInTheBlankProgramming. – MikeTrent