Q:

Objective-C custom class

I get the error: 

VertexPoint.m:12:1: Type of property 'color' ('GLfloat *' (aka 'float
  *')) does not match type of instance variable '_color' ('float [4]')

and 

VertexPoint.m:12:1: Type of property 'position' ('GLfloat *' (aka
  'float *')) does not match type of instance variable '_position'
  ('float [3]')

What should i do to resolve it?
Here is the code:
//
//  VertexPoint.m

#import <Foundation/Foundation.h>
#import "VertexPoint.h"

@implementation VertexPoint

- (id)init {
     self = [super init];
    if (self) {

        _position[0] = 1;
        _position[1] = 2;
        _position[2] = 3;

        _color[0] = 1;
        _color[1] = 2;
        _color[2] = 3;
        _color[3] = 4;
    }
    return self;

};

- (GLfloat *)x {
    return &_position[0];
};
- (GLfloat *)y {
    return &_position[1];
};
- (GLfloat *)z {
    return &_position[2];
};
- (GLfloat *)r {
    return &_color[0];
};
- (GLfloat *)g {
    return &_color[1];
};
- (GLfloat *)b {
    return &_color[2];
};
- (GLfloat *)a {
    return &_color[3];
};

- (void)setPosition:(GLfloat *)pos {
    for (NSUInteger i = 0; i < 3; i++)
        _position[i] = pos[i];
};
- (void)setColor:(GLfloat *)col{
    for (NSUInteger i = 0; i < 4; i++)
        _color[i] = col[i];
};

@end

and 
//  VertexPoint.h
//

#import <Foundation/Foundation.h>
#import <OpenGLES/EAGL.h>
#import <OpenGLES/ES1/gl.h>
#import <OpenGLES/ES1/glext.h>

@interface VertexPoint : NSObject
{
    GLfloat _position[3];
    GLfloat _color[4];
}
@property(nonatomic,readwrite) GLfloat *position;
@property(nonatomic,readwrite) GLfloat *color;
@property(nonatomic,readwrite) GLfloat *x;
@property(nonatomic,readwrite) GLfloat *y;
@property(nonatomic,readwrite) GLfloat *z;
@property(nonatomic,readwrite) GLfloat *r;
@property(nonatomic,readwrite) GLfloat *g;
@property(nonatomic,readwrite) GLfloat *b;
@property(nonatomic,readwrite) GLfloat *a;

- (GLfloat *)x;
- (GLfloat *)y;
- (GLfloat *)z;
- (GLfloat *)r;
- (GLfloat *)g;
- (GLfloat *)b;
- (GLfloat *)a;
-(void)setColor:(GLfloat *)col;
-(void)setPosition:(GLfloat *)pos;
@end

UPDATED AGAIN (2)
The new h and m files:
#import <Foundation/Foundation.h>
#import <OpenGLES/EAGL.h>
#import <OpenGLES/ES1/gl.h>
#import <OpenGLES/ES1/glext.h>

@interface VertexPoint : NSObject
{
    GLfloat _position[3];
    GLfloat _color[4];
}
@property(nonatomic,readwrite) GLfloat *position;
@property(nonatomic,readwrite) GLfloat *color;
@property(nonatomic,readonly) GLfloat x;
@property(nonatomic,readonly) GLfloat y;
@property(nonatomic,readonly) GLfloat z;
@property(nonatomic,readonly) GLfloat r;
@property(nonatomic,readonly) GLfloat g;
@property(nonatomic,readonly) GLfloat b;
@property(nonatomic,readonly) GLfloat a;

- (GLfloat)x;
- (GLfloat)y;
- (GLfloat)z;
- (GLfloat)r;
- (GLfloat)g;
- (GLfloat)b;
- (GLfloat)a;
-(void)setColor:(GLfloat *)col;
-(void)setPosition:(GLfloat *)pos;
@end

and
#import <Foundation/Foundation.h>
#import "VertexPoint.h"

@implementation VertexPoint

- (id)init {
     self = [super init];
    if (self) {

        _position[0] = 1.0f;
        _position[1] = 1.0f;
        _position[2] = 1.0f;

        _color[0] = 1.0f;
        _color[1] = 1.0f;
        _color[2] = 1.0f;
        _color[3] = 1.0f;
    }
    return self;

};

- (GLfloat)x {
    return _position[0];
};
- (GLfloat)y {
    return _position[1];
};
- (GLfloat)z {
    return _position[2];
};
- (GLfloat)r {
    return _color[0];
};
- (GLfloat )g {
    return _color[1];
};
- (GLfloat )b {
    return _color[2];
};
- (GLfloat )a {
    return _color[3];
};

- (void)setPosition:(GLfloat *)pos {
    for (NSUInteger i = 0; i < 3; i++)
        _position[i] = pos[i];
};
- (void)setColor:(GLfloat *)col{
    for (NSUInteger i = 0; i < 4; i++)
        _color[i] = col[i];
};

@end

The original error message is still there.

A:

Add:
- (GLfloat *)color {
    return &_color[0];
}

- (GLfloat *)position {
    return &_position[0];
}

to your .m implementation file.
What's happening is that you've declared properties for color and position with types GLfloat *, and you have instance variables called _color and _position. The compiler wants to link these together automatically through the standard property-ivar naming convention, but these mismatch in types (the compiler is complaining because a float pointer and an array of floats aren't the same thing for these purposes; you can't return an array in C.)
If you explicitly add getter methods that correspond to the properties, then you can provide the mapping (and different typing) explicitly yourself, as I've shown here. In these two cases, I've returned simply the pointer to the first element in the array. The caller in these cases will have to simply know that the color array has four elements and the position one has three.

