类别实例方法不会调用

时间:2012-04-18 16:28:29

标签: objective-c ios xcode methods categories

我有一个班级(核心数据生成):

@interface Place : NSManagedObject

 @property (nonatomic, retain) NSString * title;
 @property (nonatomic, retain) NSString * subtitle;
 @property (nonatomic, retain) NSNumber * latitude;
 @property (nonatomic, retain) NSNumber * longitude;

@end
@implementation Place

@dynamic title;
@dynamic subtitle;
@dynamic latitude;
@dynamic longitude;

@end

为它添加一个类别:

@interface Place (Create)
+ (Place *)placeWithTitle:(NSString *)title
        inManagedObjectContext:(NSManagedObjectContext *)context;

+(Place *) placeWithTitle:(NSString *)title andSubtitle:(NSString *)subtitle inManagedObjectContext:(NSManagedObjectContext *)context;
+(Place *) placeWithCoordinate:(CLLocationCoordinate2D) coordinate inManagedObjectContext:(NSManagedObjectContext *)context;
- (void) setLattitudeAndLongitudeByCoordinate:(CLLocationCoordinate2D) coordinate;


- (CLLocationCoordinate2D) coordinate;
@end

在此类别中,必须使用实例方法:

- (void) setLattitudeAndLongitudeByCoordinate:(CLLocationCoordinate2D) coordinate
{
    self.latitude=[NSNumber numberWithDouble:coordinate.latitude];//break point HERE
    self.longitude=[NSNumber numberWithDouble:coordinate.longitude];
}

-(CLLocationCoordinate2D) coordinate
{
    CLLocationCoordinate2D coord;//break point HERE
    coord.latitude=[self.latitude doubleValue];
    coord.longitude=[self.longitude doubleValue];
    return coord;
}

如你所见,我必须在那里断点。现在,我称之为那些方法

#import "Place+Create.h"

-(void)someMethod
{
    [self.place setLattitudeAndLongitudeByCoordinate:coordiante];
}

它似乎永远不会到达方法setLattitudeAndLogitudeByCoordinate中的那些断点, 和调试显示它甚至不会调用它们!为什么呢?

1 个答案:

答案 0 :(得分:1)

是否已达到someMethod?检查是否使用了断点或额外的NSLog

如果没有,那么您的问题就在其他地方,因为您的程序流程与您预期的不同。

如果达到,那么self.place显然是nil。这意味着你从来没有初始化它,你的程序流程与你想象的不同。