【发布时间】:2014-05-08 15:12:47
【问题描述】:
我目前正在阅读 Big Nerd Ranch 的《Objective C Programming》第 2 版一书,从一天开始我就一直在练习。
我有一个对象应该向一个方法发送消息,但我收到一个错误,即该方法的@interface 未声明。
BNRPortfolio.h:
#import <Foundation/Foundation.h>
@class BNRStockHolding;
@interface BNRPortfolio : NSObject
{
NSMutableArray *_portfolios;
}
@property (nonatomic) double currentValue;
- (void)addStock:(BNRStockHolding *)s;
@end
BNRPortfolio.m:
#import "BNRPortfolio.h"
#import "BNRStockHolding.h"
@implementation BNRPortfolio
- (double)currentValue:(BNRStockHolding *)holding
{
return [holding valueInDollars] - [holding costInDollars];
}
- (void)addStock:(BNRStockHolding *)s
{
// Do we have an array?
if (!_portfolios) {
// If not, create one
_portfolios = [[NSMutableArray alloc]init];
}
[_portfolios addObject:s];
}
@end
main.m:
#import <Foundation/Foundation.h>
#import "BNRStockHolding.h"
#import "BNRForeignStockHolding.h"
#import "BNRPortfolio.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
BNRStockHolding *holding1 = [[BNRStockHolding alloc] init];
[holding1 setPurchaseSharePrice:2.30];
[holding1 setCurrentSharePrice:4.50];
[holding1 setNumberOfShares:40];
[holding1 setNameOfHolding:@"holding1"];
// Everything is good until here and already tested
BNRPortfolio *portfolio = [[BNRPortfolio alloc] init];
[portfolio addStock:holding1]; // Throws error of undefined declaration of addStock in
//BNRPortfolio
}
return 0;
}
为什么我可以创建对象,但对象找不到在其头文件中声明的方法?
提前致谢!
【问题讨论】:
-
也看不到任何奇怪的问题。你确定 xCode 不是在捉弄你吗?尽管出现错误,您是否尝试过构建您的项目?
-
您发布的代码没有任何问题,所以我怀疑任何人都可以提供帮助。
-
尝试重启 Xcode。
-
这太疯狂了。我以为我的大脑在捉弄我,而这里的某个人看到了我看不到的东西:-)。我可以在没有最后一行“[portfolio addStock:holding1]; 的情况下构建项目,但不是那样。重新启动也没有区别。结束哇,感谢您的快速响应!
-
P.S.如果该信息有帮助,则其他方法也无法访问
标签: objective-c