自定义对象的初始化返回null

时间:2013-02-25 16:53:36

标签: ios objective-c xcode ipad ios6

这是我的自定义类:

ClassA.h

@interface ClassA : NSObject<RKRequestDelegate>{
    NSString *uri;
    NSString *folderUri;
    NSInteger idFolder;
    NSString *kind;
    bool isMine;

    CustomUser *owner;

    NSMutableArray *usersAdministrators;
    NSMutableArray *usersContributors;
    NSMutableArray *usersReaders;

    NSString *visibility;
    NSString *name;
    NSString *description;

    NSMutableArray *comments;
}


@property (nonatomic,copy) NSString *uri;
@property (nonatomic,copy) NSString *folderUri;
@property (nonatomic,assign) NSInteger idFolder;
@property (nonatomic,copy) NSString *kind;
@property (nonatomic,assign) bool isMine;

@property (retain) DMIUser *owner;

@property (nonatomic,copy) NSMutableArray *usersAdministrators;
@property (nonatomic,copy) NSMutableArray *usersContributors;
@property (nonatomic,copy) NSMutableArray *usersReaders;

@property (nonatomic,copy) NSString *visibility;
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSString *description;

@property (nonatomic,copy) NSMutableArray *comments;


@end

ClassA.m

@implementation ClassA
@synthesize uri,folderUri,idFolder,kind,isMine,owner,usersAdministrators,usersContributors,usersReaders,visibility,name,description,comments;

-(NSString*)description {
    return @"ClassA";
}


@end

非常简单。但是当我尝试创建这个的新实例时,就像这样:

datas = [NSMutableArray array]; // Tried with [[NSMutableArray alloc] init] => same thing
ClassA *classA = [[ClassA alloc] init];
[datas addObject:classA];
NSLog(@"classA = %@",classA);
NSLog(@"datas = %@",datas);

第一个NSLog返回“ClassA”。 第二个NSLog返回“datas =()”

这里有什么问题?我总是创造这样的课程,我从来没有像这样的问题。 谢谢!

3 个答案:

答案 0 :(得分:1)

好的guyzzz我发现了这个问题。这是我的属性:

NSString *description;

似乎iOs不喜欢那样。它与NSObject中的-description方法冲突... 之后,我在这里发现了一个类似的问题: Why can't I use "description" as an attribute name for a Core Data entity?

干杯

答案 1 :(得分:0)

如果你想在ClassA中返回一些值实现方法描述

- (NSString *)description {

     return @"ClassA";

}

答案 2 :(得分:0)

你拥有所需的一切。你确定你指定的变量不是弱变量吗?所有委托属性都很弱,因此不保留对象。我的猜测是你正在做这样的事情

someObject.delegate = [[ClassA alloc] init];
NSLog(@"%@", someObject.delegate);

因为委托属性为weak,所以它不会保留变量。

编辑: 整个答案假设您正在使用ARC。如果没有,请不要理会。

相关问题