2013-09-02 2 views
-4

У меня есть некоторые основные вопросы о 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 
+5

Здесь много вопросов. Вероятно, вам стоит немного поработать над некоторыми из них. – warpedspeed

+0

Для начала вы никогда не должны возвращать void в методе init. Вы можете прочитать больше об этом [здесь] (https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/instm/ NSObject/init) –

+0

Метод init неправильный. Вы не выделяете и не инициализируете переменные экземпляра, вы не вызываете супер init, и вы не возвращаете объект, выделенный возвратом self. Посмотрите на код о том, как создавать инициализаторы: https://developer.apple.com/library/ios/documentation/general/conceptual/devpedia-cocoacore/MultipleInitializers.html –

ответ

1

Короче:

I. использовать объект, вы должны выделить и инициализировать его первым. Как только это будет сделано, вы можете использовать объект много раз, вызывая методы на нем и т. Д.

II. Я рекомендую использовать ARC. Это будет проще для вас. Как только у вас появятся новые знания, вы можете вернуться и понять управление памятью.

III. Свойство - это переменная экземпляра, которая поставляется с сеттером и получателем. Apple рекомендует только получать доступ к переменным экземпляра непосредственно в методах init или dealloc. В других методах вы должны использовать getter и setter для получения/изменения переменной экземпляра.

Смежные вопросы