Q:

Can't find a appropriate property attribute for a instance variable

I'm new to this objective-c property attribute thing.  Here's the code:
student.h
#import <Foundation/NSObject.h>
@interface Student: NSObject

@property int age(assign, readwrite); //I don't know what attribute it should have
@property NSString *name(retain, readwrite); //this one either

-(Student*) initWithName: (NSString *) n andAge:(int) a;
-(void) speakName;
+(void) smoke:(NSString*) thing;

@end

student.m
#import "student.h"

@implementation Student

-(Student*) initWithName:(NSString*) n andAge:(int) a {
    self = [super init];
    if(self) {
        [self setName: n];
        [self setAge: a];
    }
    return self;
}

-(void) speakName {
    NSLog(@"MyName is %@", _name);
}

+(void) smoke:(NSString*) thing {
    NSLog(@"Smoking %@", thing);
}
@end

main.m
#import <Foundation/Foundation.h>
#import "student.h"

int main(void) {
    Student *student = [[Student alloc] initWithName: @"Markson" andAge: 29];
    [student speakName];
    [Student smoke:@"weed"];
    [student release];
    return 0;
}

for the the line
@property int age(assign, readwrite); //I don't know what attribute it should have
@property NSString *name(retain, readwrite); //this one either

when I don't give nothing to them, the compiler give me 4 warnings:
In file included from student.m:1:
./student.h:5:1: warning: no 'assign', 'retain', or 'copy' attribute is
      specified - 'assign' is assumed [-Wobjc-property-no-attribute]
@property NSString *name;
^
./student.h:5:1: warning: default property attribute 'assign' not appropriate
      for non-GC object [-Wobjc-property-no-attribute]
2 warnings generated. 
In file included from main.m:2:
./student.h:5:1: warning: no 'assign', 'retain', or 'copy' attribute is
      specified - 'assign' is assumed [-Wobjc-property-no-attribute]
@property NSString *name;
^
./student.h:5:1: warning: default property attribute 'assign' not appropriate
      for non-GC object [-Wobjc-property-no-attribute]
2 warnings generated. 

Please anyone can tell what attributes should be used for age and name properties? 

A:

@property int age(assign, readwrite); //I don't know what attribute it should have
@property NSString *name(retain, readwrite); //this one either

Short Note:
If you are creating property for primitive types like int, float, BOOL etc then use assign
If you want to retain the value then use strong or retain. 
In all other situations you can go with weak. 
And always go with atomic, and the syntax is like this
@property (<assign/retain/weak>, <atomic/nonatomic>, <read/readwrite>) <dataType> <propertyName>;

