-6ren"> -为什么它说MathOps类别中的分子和分母是未声明的变量? 它位于第11章和程序11.1 不明白为什么它不起作用,因为它与书中的代码相同,没有任何错误。 请帮忙 代码: #import #-6ren">
gpt4 book ai didi

objective-c - 与书中的代码不一样 <"Programming Objective-c 4th edition"Stephen Kochan>

转载 作者:行者123 更新时间:2023-11-30 15:56:31 26 4
gpt4 key购买 nike

为什么它说MathOps类别中的分子和分母是未声明的变量?

它位于第11章程序11.1

不明白为什么它不起作用,因为它与书中的代码相同,没有任何错误。

请帮忙

代码:

    #import <Foundation/Foundation.h>  
#import "complex.h"
#import "Fraction.h"
#import "XYPoint.h"

@interface Fraction (MathOps)
-(Fraction *)add:(Fraction *) f;
-(Fraction *)mul:(Fraction *) f;
-(Fraction *)sub:(Fraction *) f;
-(Fraction *)div:(Fraction *) f;

@end

@implementation Fraction (MathOps)
-(Fraction *)add:(Fraction *) f
{
Fraction *result = [[Fraction alloc]init];

result.numerator = (numerator * f.denominator)+(denominator * f.numerator);

// numerator and denominator: Using undeclared variables.

result.denominator = denominator * f.denominator;
}
-(Fraction *)mul:(Fraction *) f
{
Fraction *result = [[Fraction alloc]init];
result.numerator = numerator * f.numerator;
result.denominator = denominator * f.denominator;

// numerator and denominator: Using undeclared variables.
}
-(Fraction *)sub:(Fraction *) f {}
-(Fraction *)div:(Fraction *) f {}
@end

typedef Fraction *FractionObj;
int main (int argc, const char * argv[])
{

@autoreleasepool {
complex *imaginary= [[complex alloc]init];
complex *real = [[complex alloc]init];
complex *results;

[real setReal:1];
[real setImaginary:2];
[real print];

[imaginary setReal:2];
[imaginary setImaginary:1];
[imaginary print];

results = [real add: imaginary];
[results print];
NSLog(@"FRACTIONS!");
Fraction *a = [[Fraction alloc]init];
Fraction *b = [[Fraction alloc]init];
id resultFraction;

[a setTo:20 over:3];
[b setTo:1 over:3];
[b minusSign];
[a minusSign];

id ab = a;
id ba = b;
[ab print: 0];
NSLog(@"-");
[ba print: 0];
NSLog(@"=");
resultFraction = [ab multiplyN: ba];
[resultFraction print: 1];

XYPoint *xy = [[XYPoint alloc]init];

[xy setX:100 andY:110];
[xy print];

NSLog(@"VERIFYING \n \n \n");
Fraction *fraction = [[Fraction alloc]init];
complex *Complex = [[complex alloc]init];
id number = [[complex alloc]init];

if([fraction isMemberOfClass: [complex class]])
NSLog(@"Fraction is member of class complex");
if([Complex isMemberOfClass: [NSObject class]])
NSLog(@"complex is member of class NSObject");
if([Complex isKindOfClass: [NSObject class]])
NSLog(@"complex is kind of class NSObject");
if([fraction isKindOfClass: [Fraction class]])
NSLog(@"Fraction is kind of class Fraction");
if([fraction respondsToSelector: @selector(print)])
NSLog(@"Fraction respond to selector print");
if([Complex respondsToSelector: @selector(print)])
NSLog(@"Complex responds to print");
if([Fraction instancesRespondToSelector: @selector(print)])
NSLog(@"Fraction's instances respond to print");
if([number respondsToSelector: @selector (print)])
NSLog(@"number responds to print");
if([number isKindOfClass: [complex class]])
NSLog(@"number is kind of class complex");
if([[number class] respondsToSelector:@selector (alloc)])
NSLog(@"Number class responds to alloc");

if([a counter]!=1){ NSLog(@"%i times was invoked method multiplyN", a.counter); }
else { NSLog(@"Only %i time was invoked method multiplyN", a.counter);}

typedef enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday} Day;

}

return 0;
}

分数.h:

    @interface Fraction : NSObject
@property int numerator, denominator, counter;

//methods
@end

分数.m

@implementation
@synthesize numerator, denominator, counter;

//methods

@end

最佳答案

您可能需要检查您的 Fraction 类文件 .h,检查其中是否有分子和分母的集合属性。

@property(nonatomic, ...) Type *numerator
@property(nonatomic, ...) Type *denominator

并且在您的 .m 文件中,应该有

@synthesize numerator, denominator

或者,在你的 xcode 中,按住 Command 键将鼠标指向分子或分母,然后单击该变量,xcode 将带你到声明该变量的文件,如果未声明,则不会发生任何情况。

关于objective-c - 与书中的代码不一样 <"Programming Objective-c 4th edition"Stephen Kochan>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11207204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com