Ceci est une collision de nommage.
La flexibilité fournie par la liaison d'exécution nécessite un espace de nom global. Cela signifie que le nom de n'importe quel symbole dans l'application peut entrer en collision avec n'importe quel autre symbole. Le symbole des attributs de classe inclut la classe dans leur nom interne, de sorte qu'ils entrent rarement en collision. Plus souvent vous avez deux classes avec le même nom.
Dans ce cas, vous avez une classe dans la source de l'application avec le même nom qu'une classe dans l'infrastructure Notes. Il s'agit probablement d'une classe nommée "Property" si je me souviens correctement du format de l'erreur. (Vous pourriez également dire que vous avez une propriété d'une classe qui est définie deux fois.)
Comme bonne pratique, vous devriez nommer vos classes avec un suffixe ou un préfixe unique à votre entreprise ou personne. Par exemple, si vous libérez un logiciel sous Bjorn Geez Software, vous pouvez utiliser "BGS". Alors:
@interface PropertyBGS : ...//new style
@interface BGSProperty : ...//old style
Mieux encore, faites vos noms de classe plus descriptive et éviter les noms qui sont liés à des mots réservés ou terminologie commune programmation. Par exemple, si vous écriviez une application immobilière, vous seriez tenté d'utiliser "Property" comme nom de classe pour modéliser un bâtiment réel, mais "property" s'afficherait lui-même dans le code. nom plus unique et descriptif tel que:
@interface RealEstatePropertyBGS : ...//new style
@interface BGSRealEstateProperty : ...//old style
Cela empêche non seulement les collisions de noms, mais rend le code plus lisible et auto-documenté.