我需要在我的Objective-C類之一的False
默認值創建BOOL
類型的實例變量。我該怎麼做呢?我已經看到人們在他們的.h文件中定義它,但我並不需要這個變量是公開的。因此,我不應該把它放在我的.m文件中?另外,我應該讓它成爲一個物業嗎?或者我應該永遠不要製造某種財產?謝謝。如何在目標c中創建一個BOOL實例變量?
回答
我需要在我的一個目標c類中創建一個類型爲BOOL的實例變量,其默認值爲FALSE。我該怎麼做呢?
@implementation MyClass { @private BOOL myBool; }
我見過的人把它定義在他們的.h文件,但我不」:
假設你正在使用當前的Xcode,你可以在這樣的實施申報伊娃真的需要這個變量是公開的。
從歷史上看,由於類的實現方式,您必須在@interface
中聲明實例變量。現在只有當您的目標是32位OS X時纔有必要。
此外,我應該讓它成爲一個屬性嗎?
這取決於。如果它是你的類的外部API的一部分(對於不相關的類或子類可以使用,那麼你應該明確地將它作爲屬性)如果它只是對象內部狀態的一部分,則不需要將它作爲屬性(並且我不' T)。
或者我應該永遠不會讓什麼屬性?謝謝。
如果你不使用ARC和類型爲對象類型(BOOL是不是),你應該總是使它如果你使用ARC,你的是,Apple開發人員列表中的建議是製作屬於API屬性的內容以及作爲ivars的內部狀態。
請注意,即使對於內部狀態,您可能也想使用KVO,在這種情況下,請使用屬性。
如果將此BOOL聲明爲屬性併合成它,則不需要顯式聲明伊娃。如果你想使財產「可見」只類本身,使用類擴展
@interface MyClass()
@property (assign) BOOL myBool;
@end
@implementation MyClass
@synthesize myBool = myBool_; // creates an ivar myBool_ to back the property myBool.
@end
需要注意的是,儘管編譯器會產生警告,針對上述情況,在運行時,任何類都可以發送setMyBool:
或myBool
到MyClass
的對象。
如果你使它成爲一個財產,它是公開的。如果你不想讓變量公開,那麼不要使用屬性。你爲什麼不想公開?您可以擁有隻讀屬性,並通過私有類別在您的.m中進行寫入。
你可以把它放到你的.m文件,如果使用的iOS 5
@implementation MyClass {
BOOL _myBool;
}
我覺得這是一個新的iOS5。但我也看過這樣的代碼:
@implementation MyClass {
@private
BOOL _myBool;
}
希望這會有所幫助。
如果你想製作一個私有變量,你可以使用類別的力量。 作出榜樣,在.m文件類MyClass的執行以下操作:
#import "MyClass.h"
@interface MyClass() //This is an empty category on MyClass class
@property (nonatomic, assign) BOOL myBool;
@end
@implementation MyClass
@synthesize myBool = _myBool;
-(void)myMethod {
self.myBool = YES; //this is using the property
_myBool = NO; //this is the instance variable, as @synthesize creates an instance variable for you
// both are private
}
@end
你可以把聲明中.m
文件。
無論你製作一個屬性,取決於你想要的。 作爲一個財產,你可以在以後申請包括檢查/守衛/任何的setter/getter。 另外,您可以應用鍵值訪問。
如果你不需要其中的一個,那麼就不需要一個屬性(但是一個好傳統:你永遠不知道,你的代碼將如何演化)。
我使用0,1代替YES,NO
#define YES 1
#define NO 0
- 1. 如何在目標C中使用靜態變量(BOOL)C
- 2. 創建變量C++的多個實例
- 3. 在目標中全局變量實例變量c
- 4. C#創建一個實例
- 5. 目標C:方法和實例變量
- 6. 目標C類別的實例變量
- 7. 在Ruby中創建實例變量
- 8. 如何在C++中創建一個類的多個實例
- 9. 如何在C++中實例化一個成員變量中的子類實例?
- 10. 如何在Objective C中聲明一個實例變量?
- 11. 如何在C++中只實例化一個變量?
- 12. 如何加載DLL並在C#中創建一個新實例?
- 13. 如何在C++中只創建一個實例的類
- 14. 實例的範圍目標C中的變量C
- 15. 如何在PHP中從多個變量創建一個變量?
- 16. 如何在Objective C中創建一個變量單個賦值變量
- 17. 如何拒絕在Ruby中創建實例變量
- 18. 如何在變量中保存「創建片段的新實例」?
- 19. 如何在Matlab中創建高效的實例變量mutators?
- 20. 如何在JavaScript中創建實例變量?
- 21. 在運行時創建實例變量?
- 22. 實例變量VS在創建方法
- 23. 如何在目標c中定義一個全局變量?
- 24. 如何在另一個變量內創建一個變量?
- 25. 如何在C#中創建一個全局變量?
- 26. 如何在C#中創建一個變量來保存日期?
- 27. 如何在控制器中創建實例變量並在視圖中使用實例變量?
- 28. 如何在目標C中創建PKCS12
- 29. 多個實例目標c
- 30. 如何在目標中創建一個協議-C
嘗試:' - (無效)viewDidLoad中{ BOOL標誌= NO; ''。另外,一旦你想聲明.m文件,你不能從.m文件中進行屬性合成。 –
我應該在哪裏定義'flag'?在.m文件中沒有意義嗎?但是,我無法弄清楚它的語法。 Thx – Nosrettap
在.h類中定義屬性,就像在.h中所做的那樣。它將使該類對於不能從外部訪問的類非常私密。 – iphonic