宣言プロパティに関して

Objective-Cの宣言プロパティに関して、
宣言プロパティは、アクセッサメソッド定義を簡略化することができます。
通常は、変数の定義とアクセッサメソッドの実装をするのですが、
値の設定と取得しかしないのに書かなければいけないのは、面倒なので、
宣言プロパティを使えば簡略化可能です。
まずは、通常のインターフェイス定義です。

@interface SampleA : NSObject
- (id)init;
- (void)setValue:(int)arg;
- (int)value;
@end

その実装部分です。

@implementation SampleA
{
    int value;
}
- (id)init
{
    self = [super init];
    if (self != nil) {
        return self;
    }
    return nil;
}
- (void)setValue:(int)val
{
    value = val;
}
-(int)value
{
    return value;
}
@end

それで、宣言プロパティを使った場合
まずインターフェイス部分です。

@interface SampleB : NSObject
@property(assign) int value;
- (id)init;
@end

次に実装部分です。

@implementation SampleB
{
    int value;
}
- (id)init
{
    self = [super init];
    if (self != nil) {
        return self;
    }
    return nil;
}
@synthesize value;
@end

かなり簡略化させて書くことができるので楽です。
ただし、注意が必要です。
変数が基本的な型の場合とオブジェクトの場合や
ARCを使っている場合とそれ以外のリファレンスカウンターやGCの場合などでは、
書き方が違います。
ARCかそれ以外は、多分ARCしか使わないと思うので、
書き方としては、オブジェクトかそれ以外かがわかっていれば問題ないと思います。
インターフェイスのプロパティ宣言の違いは、ないです。
通常の型の場合

@interface SampleB : NSObject
@property(assign) int value;
@end

オブジェクト型の場合

@interface SampleB : NSObject
@property(assign) NSNumber *value;
@end

次に実装部分です。
通常の型の場合

@implementation SampleB
{
    int value;
}
@synthesize value;
@end

オブジェクト型の場合

@implementation SampleB
{
    __unsafe_unretained NSNumber *value;
}
@synthesize value;
@end

ARCで、オブジェクト型のプロパティ宣言の場合、
インスタンス変数に__unsafe_unretainedを付けないと駄目です。
ちなみに、これは、assignを指定した場合なんですが、
assign以外にもunsafe_unretainedが指定されている場合も同じです。
それ以外にもstrongやretainを指定した場合は、__strongをインスタンス変数に
付ける必要があります。
あ!それとですね。
assignとunsafe_unretainedは、同じ意味で、値が代入される実装を意味してます。
strongとretainは、同じ意味で、強い参照の代入の実装を意味します。