@interface and @protocol explanation?
Solution 1:
An interface is where you define the attributes and operations of class. You must set out the implementation too.
A protocol is like an interface for java.
e.g.
@protocol Printing
-(void) print;
@end
can be implemented
by declaring (confusingly in the interface)
@interface Fraction: NSObject <Printing, NSCopying> {
//etc..
The confusing thing for java developers is that the curly braces {}
are not the end of the interface e.g.
@interface Forwarder : Object
{
id recipient;
} //This is not the end of the interface - just the operations
- (id) recipient;
- (id) setRecipient:(id) _recipient;
//these are attributes.
@end
//This is the end of the interface
Solution 2:
probably good if you take a look at this + I thought it was great help to understand
From the article:
@interface
C++
Foo.h
#ifndef __FOO_H__
#define __FOO_H__
class Foo
{
...
};
Foo.cpp
#include "Foo.h"
...
Objective-C
Foo.h
@interface Foo : NSObject
{
...
}
@end
Foo.m
#import "Foo.h"
@implementation Foo
...
@end
@protocol
C++
struct MyInterface
{
void foo() = 0;
}
class A : MyInterface
{
public:
void override foo() { ... }
}
Objective-C
@protocol MyInterface
-(void) foo;
@end
@interface Foo : NSObject <MyInterface>
{
-(void) foo {...}
...
}
@end