I’m reading a book called “programming in objective-c” by Stephen Kochan. I’ve been reading through it and I’ve copied some of the code down directly from the book into my program. The only problem I’m having is using free on an object. My code is as follows (and I’m sorry for putting the entire program in, but I am a noob so there is a good chance that I’m doing something wrong earlier on in the program):
//
// main.m
// prog1
//
// Created by Brent Blackwood on 8/7/12.
// Copyright (c) 2012 Brent Blackwood. All rights reserved.
//
#import <stdio.h>
#import <objc/Object.h>
//------- @interface section -------
@interface Fraction: NSObject {
int numerator;
int denominator;
}
-(void) print;
-(void) setNumerator: (int) n;
-(void) setDenominator: (int) d;
@end
//------- @implementation section -------
@implementation Fraction;
-(void) print{
printf (" %i/%i ", numerator, denominator);
}
-(void) setNumerator: (int) n {
numerator = n;
}
-(void) setDenominator: (int) d {
denominator = d;
}
@end
//------- program section -------
int main (int argc, char *argv[]) {
// Create an instance of a Fraction
Fraction *myFraction = [Fraction new];
// Set fraction to 1/3
[myFraction setNumerator: 1];
[myFraction setDenominator: 3];
// Display the fraction using the print method
printf ("The value of myFraction is:");
[myFraction print];
printf ("\n");
[myFraction free]; // ************---This is the line giving the error.---***********
return 0;
}
The error I’m getting is “No visible @interface for ‘Fraction’ declares the selector ‘free'” after the line “[myFraction free]”;. I’ve looked through the book and can’t figure out what the problem is. It makes no mention of this error. What does this mean and how can I fix it?
I’ve also looked at some similar questions here on stack before I asked but their problems don’t seem to be the error that I’m running into. Please help. Thanks!
In objective C you do not use free to release an allocated instance of an object. free is only to be used when you called “malloc”.
In objective C [MyClass new] is not equivalent to malloc, its equivalent to
This object is “freed” using the following
Cheers