Anonymous
Anonymous

Reputation: 1820

NSInvocation and ARC (Automatic Reference Counting)

When trying to migrate my current code to ARC, I'm getting errors whenever I pass an NSString as an NSInvocation argument.

Example:

NSInvocation inv = ...;
NSString *one = @"Hello World!";
[inv setArgument:&one atIndex:2];

The error happens when I use the Refactor -> Convert to Objective-C ARC option from the Edit menu. The text is "NSInvocation's setArgument is not safe to be used with an object with ownership other than __unsafe_retained."

How would I get around this?

Upvotes: 9

Views: 3802

Answers (2)

Yoav
Yoav

Reputation: 6098

As Joshua Weinberg commented, using NSInvocation is not recommended anymore. If you have up to two parameters you can use performSelector. For three parameters or more, you can use NSObject's -methodForSelector: as explained here.

Upvotes: 5

Abizern
Abizern

Reputation: 150615

This might work;

__unsafe_unretained NSString *one = @"Hello World";

Upvotes: 10

Related Questions