为什么在iOS中不需要Cocoa时需要ivars?

neo*_*eye 0 cocoa properties ios

我有点像iOS的方式,不必指定ivars,但我不知道在Cocoa中可以做同样的事情,或者这是一个坏主意.


这是Cocoa和iOS中的相同代码

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

@implementation Foobar
@synthesize name = m_name;
@end
Run Code Online (Sandbox Code Playgroud)
// iOS
@interface Foobar : NSObject {
    // no ivar here
}
@property (nonatomic, retain) NSString* name;
@end

@implementation Foobar
@synthesize name;
@end
Run Code Online (Sandbox Code Playgroud)

Jen*_*ton 7

消除ivars的能力需要"非脆弱的"Objective-C运行时.32位版本的Mac OS X使用"脆弱"运行时.如果您仅定位到64位系统,则可以像在iOS上一样进行.