2011-06-03 101 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