У меня есть некоторые основные вопросы о Objective-C:Некоторые основные вопросы о Objective-C
I. Когда я хочу получить доступ к методу экземпляра объекта, я всегда должен передать его первым, чтобы получить доступ к метод? Даже если я уже выделил его где-то еще?
например:
CustomPerson *person = [[CustomPerson alloc] init];
[person getName];
// can't I do something like this? (
[get_instance_of_already_somewhere_allocated_person getName];
II. Как начинающий, следует ли начинать с ARC?
III. В чем разница между переменными экземпляра и переменными @ property-variables? Я имею в виду, когда я обращаюсь к ним в своих методах, разве они не являются «глобальными» в моем случае?
например:
// CustomPerson.h
@interface CustomPerson : NSObject {
UIImageView *_person;
}
@property (nonatomic, strong) UIImageView *img;
// CustomPerson.m
@implementation CustomPerson
@synthesize img = _img;
- (id)init
{
img.image = @"someimage.png";
_person.image = @"someimage.png";
[self setImageToSomeOtherImage:@"rustyimage.png"];
}
- (void)setImageToSomeOtherImage:(NSString *)img
{
// img.image before was "someimage.png"
img.image = img;
// _person.image before was "someimage.png"
_person.image = img;
}
@end
Здесь много вопросов. Вероятно, вам стоит немного поработать над некоторыми из них. – warpedspeed
Для начала вы никогда не должны возвращать void в методе init. Вы можете прочитать больше об этом [здесь] (https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/instm/ NSObject/init) –
Метод init неправильный. Вы не выделяете и не инициализируете переменные экземпляра, вы не вызываете супер init, и вы не возвращаете объект, выделенный возвратом self. Посмотрите на код о том, как создавать инициализаторы: https://developer.apple.com/library/ios/documentation/general/conceptual/devpedia-cocoacore/MultipleInitializers.html –