On Oct 16, 2011, at 1:58 AM, Gerriet M. Denkmann wrote:
> I have this code:
>
> for( id aThing in someArray )
> {
> if ( [ aThing respondsToSelector: @selector(setTitle:) ] )
> {
> [ self replaceIn: aThing
> readSelector: @selector(title)
> writeSelector: @selector(setTitle:)
> withTable: tableName
> ];
> }
> }
>
>
> - (void)replaceIn: thing readSelector: (SEL)selectorIn writeSelector:
> (SEL)selectorOut withTable: (NSString *)tableName;
> {
> NSString *key = [ thing performSelector: selectorIn ];
> ...
> NSString *rep = ...
> [ thing performSelector: selectorOut withObject: rep ];
> }
>
> Now, using Arc I am told that "PerformSelector may cause a leak because its
> selector is unknown".
> What I am supposed to do about this? I really want to have code without
> warnings.
Based on your samples, why not change this to just use KVC instead?
for (id aThing in someArray)
if ([aThing respondsToSelector: @selector(setTitle:)]) { // too bad
there isn't a cleaner way to ask [aThing hasKey: @"title"]
[ self replaceIn: aThing key: @"title" withTable: tableName ];
}
}
- (void) replaceIn: (id) thing key: (NSString *) ivarKey withTable: (NSString
*) tableName
{
NSString *key = [thing valueForKey: ivarKey];
...
NSString *rep = ...
...
[ thing setValue: rep forKey: ivarKey];
}
Glenn Andreas [email protected]
The most merciful thing in the world ... is the inability of the human mind to
correlate all its contents - HPL
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]