僅限iOS 5,使用ARC。在我的核心數據模型類:NSManagedObject類中的實例變量的作用類似於一個類變量?
// Planet.h //
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@interface Planet : NSManagedObject
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSNumber *diameter_km;
@property (nonatomic, retain) NSNumber *mass_kg;
-(void) setVisited:(BOOL)flag;
-(BOOL) isVisited;
@end
// Planet.m //
//#import "Planet.h"
@implementation Planet
@dynamic name;
@dynamic diameter_km;
@dynamic mass_kg;
BOOL visitedByHumans; // not a core data entity; just an ivar
-(void)setVisited:(BOOL)flag {
visitedByHumans = flag;
}
-(BOOL)isVisited {
return visitedByHumans;
}
@end
我使用MagicalRecord來創建「金星」和「火星」。在我的視圖控制器中,我使用標籤和按鈕來測試上述內容。測試表明,當我「訪問」火星時,金星也會被訪問。如果我將伊瓦爾visitedByHumans轉換爲非核心數據屬性,它將按預期工作。所以我不再「卡住」,但我想了解伊娃的事情。
換言之,上述表現爲好像我寫道: 靜態BOOL visitedByHumans; – bedouger
是的,在本質上。 '靜態'只會限制它的範圍,但否則你是正確的。無論哪種方式,這是一個全局變量。 – gschandler
必須在接口中聲明iOS5以前的非屬性實例變量(通常在私有類別中聲明)。對於iOS5,我不能像上面的代碼那樣創建一個實例變量嗎? (術語澄清:由「實例變量」我只是意味着它不是一個屬性,它不是一個靜態的或類變量) – bedouger