2011-06-04 2 views
0

J'ai une propriété déclarée sur une classe:iphone - définition d'une propriété sur une autre classe

.h

@interface myClass : UIView { 
    BOOL doStuff; 
} 

@property BOOL doStuff; 

.m

@synthesize doStuff; 

cette classe est délégué d'un autre. D'autre classe, je suis en train de définir cette propriété, faire quelque chose comme

[delegate setDoStuff:YES]; 

Je reçois une erreur me disant que « méthode -setDoStuff: not found ... »

Comment puis-je déclarer la propriété sur la classe, afin que les autres classes peuvent lire et les définir?

merci.

Répondre

2

est votre délégué déclaré comme type "id"?
soit vous déclarer son vrai type MyClass délégué dans l'autre classe (qui pointe vers votre maclasse) ou
déclarent un protocole délégué doit mettre en œuvre id dans la déclaration.
Dernière (mais pas la bonne approche) est de le typer [(MyClass
) délégué doStuff].

1

Assurez-vous que vous importez l'en-tête de votre classe personnalisée et que delegate est déclaré en tant qu'instance de cette classe.

+0

dois-je importer l'en-tête? Si le délégué est défini et fonctionne (et c'est le cas, car je peux appeler des méthodes sur le délégué), pourquoi l'importation d'en-tête est-elle nécessaire? Je veux dire, si je peux accéder à des méthodes sur le délégué et les setters/getters sont "une sorte" de méthode, pourquoi ils ne sont pas vus par l'autre classe? Je ne comprends pas ... et btw, j'ai importé l'en-tête et l'erreur persiste ... – SpaceDog

1

vous pouvez également spécifier le nom de setter fonction dans @property.

@property (nonatomic,setter = setMyDoStuff,assign) BOOL doStuff; 
Questions connexes