我遇到屬性問題。首先,我定義它:@property問題 - 目標C
@property (readwrite) BOOL isPerformingOperation;
然後合成它:
@synthesize isPerformingOperation;
然後我將該屬性設置爲這樣:
self.isPerformingOperation = YES;
要確保我做的事情我的日誌:
NSLog(@"class perform is %i",self.isPerformingOperation);
...它應該返回1。
但是後來我需要從另一個類中讀取屬性 - DAUpdatingView
,所以我從我添加屬性的類中導入頭文件並嘗試兩種獲取值的方法,即使當我在原來的班級設置爲1。
NSLog(@"My Boolean: %d, or %@", [USBBackupAppDelegate sharedInstance].isPerformingOperation, [USBBackupAppDelegate sharedInstance].isPerformingOperation ? @"Yes" : @"No");
這是控制檯輸出:
2010-10-12 19:32:11.381 USBBackup[3329:a0f] class perform is 1
2010-10-12 19:32:15.330 USBBackup[3329:a0f] My Boolean: 0, or No
正如你所看到的,其屬性從已經改變了價值,因爲它本來是主類到,但其他班級不讀它。我錯過了什麼?
編輯:
是的,我用的是原來的類的共享實例:
static USBBackupAppDelegate *sharedInstance = nil;
+ (USBBackupAppDelegate *)sharedInstance
{
return sharedInstance ? sharedInstance : [[self alloc] init];
}
類是指類型,該類的每個運行時實例都稱爲對象。你問題的最後一句應該是「屬性設置的主要對象具有改變的值,但另一個對象具有默認值」 - 對象每個都有它們自己的所有屬性副本,因此你可以看到什麼是錯誤的你瞭解類和對象之間的區別。 – 2010-10-12 18:48:28
我有一個類和NSView的子類 - USBBackupDelegate&DAUpdatingView - 我想從DAUpdatingView子類中的USBBackupDelegate類獲取屬性。 – Pripyat 2010-10-12 18:50:46