Что стоит остальным новичкам:
В обычных языках можно просто определить аргументы при создании экземпляра класса:
public final class MakeBed {
private var foo:Object;
public var bar:Array;
public function MakeBed(_foo:Object, _bar:Array) {
// Do stuff
foo = _foo;
bar = _bar;
}
}
Затем, когда мы хотим создать экземпляр классаэто так просто, как:
var myBeadMaker:MakeBed = new MakeBed({}, []);
В objc все обратно.
Вы можете создать свой собственный инициализатор, похожий на:
// These @properties go into the header.h file
@property (nonatomic, retain) NSString *foo;
@property (nonatomic, retain) NSString *bar;
// This is in your implimentation.m file
- (id) initWithInfo:(NSObject*)foo withBar:(NSArray *)bar {
_foo = foo;
_bar = bar;
}
Objc автоматически «синтезирует» геттеры и сеттеры и автоматически создает новую переменную «вслепую», используя то же самое _name _but _ с _anderscore впереди, когда вы делаете вещь @property - это волшебство - граничит с «почти тоже»полезная сторона вещей.
Удобно для не новичков, но невероятно запутанно для новичков - просто верьте, что геттер и сеттер созданы и что _new _var __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Новый _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Новый _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _...
Когда вы хотите создать экземпляр класса с помощью своего пользовательского инициализатора, вы делаете это:
MakeBed myBedMaker = [[MakeBed alloc] initWithInfo:*foo withBar:*bar];