我在 .h 檔案中宣告了一個 NSArray
@interface ClassName : NSObject
{
NSArray *myArray;
}
@property (nonatomic, strong) NSArray *myArray;
@end
在 .m 檔案中,我擁有它。
@implementation ClassName
NSArray* myArray;
我正在嘗試快速訪問它,如下所示。
var x = ClassName().myArray
x 始終為零。
uj5u.com熱心網友回復:
您的 Objective-C 類有幾個問題。您已經宣告了myArray屬性(這很好),但是您還在頭檔案中添加了一個同名的公共實體變數,并且您在 .m 檔案中創建了一個同名的全域變數(不是實體變數) . 以下是您應該擁有的:
在 .h 檔案中:
@interface ClassName : NSObject
@property (nonatomic, strong) NSArray *myArray;
@end
在 .m 檔案中:
@implementation ClassName
@end
而已。
下一個大問題是您正在訪問該myArray屬性,但您從未給它一個值。這就是為什么你總是得到nil.
這與擁有一個從未賦予值的可選屬性的 Swift 類沒有什么不同。
假設您有以下 Swift 類:
class ClassName {
var myArray: [Any]?
}
如果你這樣做了:
var x = ClassName().myArray
你會得到nil和使用 Objective-C 類一樣的結果。在這兩種情況下,您都需要創建該類的一個實體并為myArray.
var c = ClassName()
c.myArray = [ "Hi", "There" ]
現在您可以訪問陣列:
var x = c.myArray
順便說一句 - 假設您希望陣列保存特定型別的值,您應該更新 Objective-C 類中的屬性宣告。
例如:
@property (nonatomic, strong) NSArray<NSString *> *myArray;
如果你想要一個陣列NSString。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/531183.html
標籤:迅速目标-c数组
