关于Objective-C的一些基本问题

时间:2013-09-02 12:55:04

标签: objective-c cocoa oop

我有一些关于Objective-C的基本问题:

予。当我想访问对象的实例方法时,我是否总是必须先分配它才能访问该方法?即使我已经在其他地方分配了它?

E.G:

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有什么区别?我的意思是当我在我的方法中访问它们时,它们在我的实例中是不是都是“全局的”?

E.G:

// 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

1 个答案:

答案 0 :(得分:1)

简而言之:

予。使用您必须首先分配和初始化的对象。完成此操作后,您可以多次使用该对象,在其上调用方法等等。

II。我推荐使用ARC。这对你来说会更简单。一旦掌握了更多知识,就可以回过头来理解内存管理。

III。属性是一个带有setter和getter的实例变量。 Apple建议您只在init或dealloc方法中直接访问实例变量。在其他方法中,您应该使用getter和setter来获取/更改实例变量。