@property(副本)与方法[复制]

下面的(A)和(B)有什么区别? (假设NON ARC,如果有关系)

// --- (A) ---
@interface Zoo : NSObject{}
@property (copy) Dog *dog;
@end
//..... then somewhere
someZoo.dog = another_dog;
// --- (B) ---
@interface Zoo : NSObject{}
@property (assign) Dog *dog;
@end
//..... then somewhere
someZoo.dog = [another_dog copy];

如果答案是否定的,使用(A)有什么好处? 我发现方法(B)不太容易出错,因为显式代码准确显示了正在发生的事情,但是我不是专家,因此是问题所在。