Вот пример Swift 3+, Xcode 8+ с кодом:
class MySuperbClass{
let a = 4
func getClassName() -> String? {
return String(describing: type(of:self)).components(separatedBy: ".").first
}
}
let className = String(describing: type(of:MySuperbClass.self)).components(separatedBy: ".").first
//className = "MySuperbClass"
let classNameFromObject = MySuperbClass().getClassName()
//classNameFromObject = "MySuperbClass"
Я думаю, что нужно "Какао-у" скрыть массив int, даже если вы используете его для внутренних целей. Что-то вроде:
@interface Lottery : NSObject {
int numbers[5];
}
- (int)numberAtIndex:(int)index;
- (void)setNumber:(int)number atIndex:(int)index;
@end
@implementation Lottery
- (int)numberAtIndex:(int)index {
if (index > 4)
[[NSException exceptionWithName:NSRangeException reason:[NSString stringWithFormat:@"Index %d is out of range", index] userInfo:nil] raise];
return numbers[index];
}
- (void)setNumber:(int)number atIndex:(int)index {
if (index > 4)
[[NSException exceptionWithName:NSRangeException reason:[NSString stringWithFormat:@"Index %d is out of range", index] userInfo:nil] raise];
numbers[index] = number;
}
Вы не должны использовать int в этом случае, если хотите использовать массив. Используйте NSNumber и поместите эти 5 NSNumber в NSMutableArray.
@interface testClass: NSObject {
NSMutableArray* numbers;
}
@property (nonatomic, retain) NSMutableArray* numbers;
-(id)initWithValue:(NSNumber *)initialValue;
@end
@implementation testClass
@synthesize numbers;
-(id)initWithValue:(NSNumber *)initialValue {
numbers = [[NSMutableArray alloc] initWithCapacity:5];
[numbers addObject:initialValue];
return self;
}
@end
Это код для интерфейса и реализации с синтезом (не тестировалось, BTW). Чего вы пытаетесь достичь?
У меня есть переменная класса:
NSInteger myInt[5];
Чтобы я мог использовать в своем коде обычный синтаксис myInt [1] = 0, я создал свойство, которое возвращает целочисленный указатель:
@property (nonatomic, readonly) NSInteger *myInt;
Затем создал следующий метод получения:
-(NSInteger *) myInt {
return myInt
}
Теперь я могу использовать что-то вроде class.myInt [1] = 0;
Ну, я не знаю наверняка, что это работает, но похоже, что это так. Я просто подумал, что выложу это, если кто-то еще захочет попробовать.