2011-06-03 69 views
0

我有点像iOS没有指定ivars的方式,但我不知道它可能在可可中做同样的事情,或者它是一个坏主意。为什么ivars在iOS中不需要时可可需要?


这里是可可和iOS

// Cocoa 
@interface Foobar : NSObject { 
    NSString* m_name; 
} 
@property (nonatomic, retain) NSString* name; 
@end 

@implementation Foobar 
@synthesize name = m_name; 
@end 

// iOS 
@interface Foobar : NSObject { 
    // no ivar here 
} 
@property (nonatomic, retain) NSString* name; 
@end 

@implementation Foobar 
@synthesize name; 
@end 

+0

我一直在iOS代码中指定ivars。 – BoltClock 2011-06-03 13:32:37

+0

我也做到了这一点,但我的iOS朋友指出,这是没有必要的。其中困惑我。 – neoneye 2011-06-03 13:43:00

+0

您也可以完全从'@ interface'中省略实例变量部分('{...}'),并且在包含它时,可以将其放在'@ implementation'而不是'@ interface'中。自从我发现这种情况以来,我的编码风格只是将实例变量部分放在'@ implementation'中,如果有的话。 – 2011-06-04 01:38:01

回答

7

的Elid到实例变量的能力相同的代码需要“非脆弱” Objective-C运行。 32位版本的Mac OS X使用“脆弱”运行时。如果您只针对64位系统,则可以在iOS上以相同方式进行操作。

+0

阿哈,读完“脆弱”后,我终于明白了。谢谢。 http://www.sealiesoftware.com/blog/archive/2009/01/27/objc_explain_Non-fragile_ivars.html – neoneye 2011-06-03 13:54:08

相关问题