|
|||||||
![]() |
|
|
Thread Tools | Search this Thread | Display Modes |
|
|
#1 |
|
Confusion on instance variables being in the implementation file.
Hi guys,
I was referencing one of my Objective-C books* and noticed that there were instance variables defined in the implementation section of a class. I assume because the users in the class don't need to know about the instance variables, just the interface file but it leads me to two questions: 1. When did this start? I'm pretty sure its new as I've never seen it before. (Some internet research suggests its new in Xcode 4.2, but I can't find anything in Apple's docs about it). 2. If it's Xcode only, wouldn't this be a bad way to do things since some other IDE's support Objective-C, but not necessarily putting the ivars in the implementation section? The book is the newest version (4.0) of Steve Kochan's programming in Objective-C. I have and read the 2.0 version and the classes do not have ivars in the implementation section, but I couldn't find in the new version where this difference, and the reasoning behind it is mentioned.
__________________
Macbook Air 13inch Ultimate
Hexcore MacPro 3.33ghz - 24 gigs ram - ATI 5870 - Dual 27inch ACD's |
|
|
|
0
|
|
|
#2 |
|
Maybe post some code of what you mean ? Are you sure these are "instance" variables ?
Usually, when doing this for methods, it's to make them "private". For variables, you can do so in the interface section using the @private directive, so no need to stick them in the implementation file. However, I do use variables in implementation files, as a global symbol. These I use as "class variables", variables that survive and are accessible by all instances of the class or by class methods.
__________________
"What you leave behind is not what is engraved in stone monuments, but what is woven into the lives of others." -- Pericles |
|
|
|
0
|
|
|
#3 |
|
Here is some code straight from the book:
Code:
@interface Fraction : NSObject
{
}
-(void) print;
-(void) setNumerator: (int) n;
-(void) setDenominator: (int)n;
@end
Code:
@implementation Fraction
{
int numerator;
int denominator;
}
-(void)print
{
NSLog(@"%i / %i", numerator, denominator);
}
-(void)setNumerator:(int)n
{
numerator = n;
}
-(void)setDenominator:(int)n
{
denominator = n;
}
@end
__________________
Macbook Air 13inch Ultimate
Hexcore MacPro 3.33ghz - 24 gigs ram - ATI 5870 - Dual 27inch ACD's Last edited by chrono1081; Feb 13, 2012 at 12:22 PM. |
|
|
|
0
|
|
|
#4 |
|
This is a new feature of the most recent clang (aka Apple LLVM) compiler, specifically. It's useful to hide private state of classes.
|
|
|
|
0
|
|
|
#5 |
|
I forgot about this feature. I like having only public things in the header, and this makes it even more cleaner. FWIW, it works with the Snow Leopard Xcode 4.2 build.
|
|
|
|
0
|
![]() |
|
«
Previous Thread
|
Next Thread
»
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
Similar Threads
|
||||
| thread | Thread Starter | Forum | Replies | Last Post |
| Missing Tracks from iTunes in the Cloud | AndrewLGP | Mac Applications and Mac App Store | 3 | Jun 19, 2011 03:16 PM |
| iPad2 cannot be synced. The required file cannot be found. | jeffreyk | iPad Tips, Help and Troubleshooting | 5 | May 18, 2011 05:08 PM |
| How long do you think it will be for the new batch of MBPs to be in the refurb store? | rhcpfan0 | Buying Tips and Advice | 2 | Jun 11, 2009 07:26 PM |
| the iPhone 'x' could not be synced- the required file could not be found | benfilan | iPhone Tips, Help and Troubleshooting | 2 | Nov 12, 2007 12:57 PM |
| ipod cannot be updated. The required file cannot be found". | davidwhitehall | iPod | 1 | May 28, 2007 08:01 PM |
All times are GMT -5. The time now is 07:29 AM.







Linear Mode

