自定义类的getter和setter

时间:2010-09-19 21:48:35

标签: objective-c cocoa-touch class setter getter

如果你综合了一个自定义类,那么为它创建getter和setter吗?

这是我创建的自定义类。

//  MyClass.h
#import <Foundation/Foundation.h>


@interface MyClass : NSObject <NSCoding> {
    NSString *string1;
    NSString *string2;

}
@property (nonatomic, retain) NSString *string1;
@property (nonatomic, retain) NSString *string2;

@end

这里我将该类的对象声明为属性

//  DetailViewController.h


#import <UIKit/UIKit.h>
#import "MyClass.h"


@interface DetailViewController : UIViewController {

    MyClass *myObject;
}
@property(nonatomic, retain) MyClass *myObject;

@end

这里我合成了这个对象。

#import "DetailViewController.h"
#import "MyClass.h"


@implementation DetailViewController
@synthesize myObject;

它有吸气剂和固定剂吗?

当我尝试在RootViewController.m

中运行此代码时
DetailViewController.myObject = [theArray objectAtIndex:indexPath.row];

我收到错误提示“访问未知的'setMyObject:'类方法。无法设置对象 - 无论是readonly属性还是找不到setter。'

1 个答案:

答案 0 :(得分:4)

只有将所需的实例变量声明为属性,然后synthesize propname;才会创建getter和setter。现在,getter和setter中的代码类型取决于您定义的属性属性(nonatomic / atomicassignretaincopy

编辑OP修订后的问题:是的,将为myObject

DetailViewController实例变量创建一个getter / setter

DetailViewController.myObject = [theArray objectAtIndex:indexPath.row];

您正在尝试设置未定义的类变量DetailViewController的类型为Class,而非DetailViewController。在DetailViewController实例上执行相同的操作,您应该全部设置。